Python爬虫个人记录(三)爬取妹子图
这此教程可能会比较简洁,具体细节可参考我的第一篇教程:
Python爬虫个人记录(一)豆瓣250
Python爬虫个人记录(二)fishc爬虫
一、目的分析
获取煎蛋妹子图并下载
http://jandan.net/ooxx
大概就是这么个样子了^_^
心动了吗,那就行动吧。
二、步骤分析
获得当前妹子图的页码
2、 获得http://jandan.net/ooxx前十页地址
3、分析前十页地址并获得图片真实下载地址
4、下载前十页的妹子图并保存
三、scrapy shell 模拟分析
1、获取页码
cmd ->scrapy shell
>>> fetch('http://jiandan.net/ooxx/')
2017-08-13 15:22:52 [scrapy.core.engine] INFO: Spider opened
2017-08-13 15:22:52 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://jandan.net/ooxx> (referer: None)
>>> response.xpath('//*[@id="comments"]/div[2]/div/a[1]/text()').extract()
['\r\n 252 ']
>>>
关于获取xpath方法可参照豆瓣记录(一)fishc记录(二)
2、合成地址访问,并分析出妹子图片下载地址(页面一为例)
>>> fetch('http://jandan.net/ooxx/page-252#comments')
2017-08-13 15:33:08 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://jandan.net/ooxx/page-252#comments> (referer: None)
>>> response.xpath('//*[@id="comment-3533810"]/div/div/div[2]/p/img').extract()
['<img src="//wx4.sinaimg.cn/mw600/005Dt8Kogy1fidom0zig8j30fx0ku0ww.jpg">']
>>> response.xpath('//*[@id="comment-3533810"]/div/div/div[2]/p/img/@src').extract()
['//wx4.sinaimg.cn/mw600/005Dt8Kogy1fidom0zig8j30fx0ku0ww.jpg']
>>>
获得图片下载地址成功
四、Python代码书写
(细节参考记录一、二)
直接上源码了,有一些注释,可以自行参考阅读
import urllib.request
import os
from lxml import etree #打开一个网页操作
def url_open(url):
req = urllib.request.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.3226.400 QQBrowser/9.6.11681.400')
response = urllib.request.urlopen(url)
html = response.read() return html def find_data(url = '', xrule = ''):
result_data = [] html = url_open(url)
selector = etree.HTML(html)
result_data = selector.xpath(xrule) return result_data #将图片保存在本地
def save(folder, image_addrs): for each in image_addrs:
file_name = each.split('/')[-1]
with open(file_name, 'wb') as f:
img = url_open(each)
f.write(img) def test1(): url = 'http://jiandan.net/ooxx/'
page = 5 #获取的图片页数 #获取最新妹子页码
xrule = '//*[@id="comments"]/div[2]/div/a[1]/text()'
page_num = find_data(url, xrule)
page_num = int(page_num[0])
#print(page_num) #成功
#获取下载链接
list_1 = []
xrule_1 = '//li[contains(@id,"comment-")]/div/div/div[2]/p/img/@src'
for i in range(page):
page_url = 'http://jiandan.net/ooxx/page-' + str(page_num - i) + '#comments'
result = find_data(page_url, xrule_1)
for each in result:
each = 'http:' + each
list_1.append(each)
#print(each)
#下载并保存图片
folder = 'OOXX'
os.mkdir(folder)
os.chdir(folder)
save(folder, list_1) if __name__ == '__main__':
test1()
结果展示
五、总结
有福利才有学习的动力,努力学习为了更多的福利^_^
顺便打波小广告:I love fishc.com
这篇教程参考小甲鱼零基础入门学习python
欢迎来鱼c论坛学习^_^
Python爬虫个人记录(三)爬取妹子图的更多相关文章
- Python 爬虫入门(二)——爬取妹子图
Python 爬虫入门 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. GitHub 地址: https://github.com/injetlee/Python/blob ...
- Python 爬虫入门之爬取妹子图
Python 爬虫入门之爬取妹子图 来源:李英杰 链接: https://segmentfault.com/a/1190000015798452 听说你写代码没动力?本文就给你动力,爬取妹子图.如果 ...
- 转 Python爬虫实战一之爬取糗事百科段子
静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...
- python爬虫:了解JS加密爬取网易云音乐
python爬虫:了解JS加密爬取网易云音乐 前言 大家好,我是"持之以恒_liu",之所以起这个名字,就是希望我自己无论做什么事,只要一开始选择了,那么就要坚持到底,不管结果如何 ...
- Python爬虫:为什么你爬取不到网页数据
前言: 之前小编写了一篇关于爬虫为什么爬取不到数据文章(文章链接为:Python爬虫经常爬不到数据,或许你可以看一下小编的这篇文章), 但是当时小编也是胡乱编写的,其实里面有很多问题的,现在小编重新发 ...
- Python爬虫实战二之爬取百度贴吧帖子
大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...
- Python爬虫实战一之爬取糗事百科段子
大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...
- 转 Python爬虫实战二之爬取百度贴吧帖子
静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 ...
- python爬虫学习01--电子书爬取
python爬虫学习01--电子书爬取 1.获取网页信息 import requests #导入requests库 ''' 获取网页信息 ''' if __name__ == '__main__': ...
随机推荐
- vbs 解析 html 文档
关于VBS采集,网上流行比较多的方法都是正则,其实 htmlfile 可以解析 html 代码,但如果 designMode 没开启的话,有时候会包安全提示信息.但是开启 designMode (@预 ...
- JS代码判断浏览器版本,支持IE6,IE7,IE8,IE9!三种方法!
web开发的时候有时候会用到JS检测IE的版本,下面是检测Microsoft Internet Explorer版本的三种代码! 方法一: <script type="text/jav ...
- 20155233 2016-2017-2 《Java程序设计》第7周学习总结
20155233 2016-2017-2 <Java程序设计>第7周学习总结 学习目标 了解Lambda语法 了解方法引用 了解Fucntional与Stream API 掌握Date与C ...
- 20155236 2016-2017-2 《Java程序设计》第五周学习总结
20155236 2016-2017-2 <Java程序设计>第五周学习总结 教材学习内容总结 Java的异常处理是通过5个关键字来实现的:try,catch,throw,throws,f ...
- 差分约束系统+输出路径(I - Advertisement POJ - 1752 )
题目链接:https://cn.vjudge.net/contest/276233#problem/I 题目大意:输入k和n,然后输入n行,每一次输入两个数,代表开端和结尾,如果这个区间内点的个数大于 ...
- 零值比较--BOOL,int,float,指针变量与零值比较的if语句
这是程序员面试的一道常见题,也是个C++基础问题.若只在大学里看过几本基础的编程入门书,看见这道题可能会觉得奇怪,不就是和0比较吗,直接拿出来比就是了,其实非也.下文引自google搜索结果,出处不详 ...
- 冲量:momentum
参见:http://www.jianshu.com/p/58b3fe300ecb,这个博客里有冲量的python实现的代码和讲解 “冲量”这个概念源自于物理中的力学,表示力对时间的积累效应. 在普通的 ...
- Python图片验证码降噪 — 8邻域降噪
简介 图片验证码识别的可以分为几个步骤,一般用 Pillow 库或 OpenCV 来实现,这几个过程是: 1.灰度处理&二值化 2.降噪 3.字符分割 4.标准化 5.识别 所谓降噪就是把不需 ...
- Meltdown论文翻译【转】
转自:http://www.wowotech.net/basic_subject/meltdown.html#6596 摘要(Abstract) The security of computer sy ...
- [Android Studio] Android Studio如何快速生成get,set,tostring,构造函数
刚开始使用Android Studio时,在创建一个javabean时,很习惯的在JavaBean类中,右键去找生成get,set等选项.但是很遗憾,找不到. 那这边如何快速的set,get或者生成构 ...