Python爬虫个人记录(三)爬取妹子图

这此教程可能会比较简洁,具体细节可参考我的第一篇教程:
Python爬虫个人记录(一)豆瓣250
Python爬虫个人记录(二)fishc爬虫

一、目的分析

获取煎蛋妹子图并下载
http://jandan.net/ooxx
Python爬虫个人记录(三)爬取妹子图
大概就是这么个样子了^_^

心动了吗,那就行动吧。

二、步骤分析

1、访问http://jandan.net/ooxx

获得当前妹子图的页码
Python爬虫个人记录(三)爬取妹子图

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()

结果展示
Python爬虫个人记录(三)爬取妹子图

五、总结

有福利才有学习的动力,努力学习为了更多的福利^_^

顺便打波小广告:I love fishc.com
这篇教程参考小甲鱼零基础入门学习python
欢迎来鱼c论坛学习^_^

上一篇:【转】数据库系统异常排查之DMV


下一篇:concrrent类下ReentrantReadWriteLock类的原理以及使用