这此教程可能会比较简洁,具体细节可参考我的第一篇教程:
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() [' 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论坛学习^_^