今天讲下爬妹子图的详细过程!!!
爬图片其实和爬信息是差不多的,只不过爬图片多了1,2个步骤而已
1.首先你要先拿到图片的url
2.然后就是拿到图片的二进制数据
拿到以上两样东西之后就可以下载网上的图片啦~
爬妹子图有多种方法,比如说:
1.用requests,lxml,os库
2.用selenium,re,os库
3.用scrapy的scrapy.spider,re,os库
4.用scrapy的crawlspider,re,os库
今天我就来讲下第一种——用requests,lxml,os库
一.向妹子图首页发送请求
爬妹子图的请求头,要加上user-agent和referer
切记referer一定要加上!!不然获取不了图片的二进制数据,我之前就是在这卡了两天
headers={ "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", "referer": "https://www.mzitu.com/all/"}
response = requests.get("https://www.mzitu.com/all/",headers=headers)
二.把页面文本转化为html
html = etree.HTML(response.text)
三.提取每个主题的名字与url
pic_url = html.xpath('//ul[@class="archives"]/li/p/a/@href')
pic_tit = html.xpath('//ul[@class="archives"]/li/p/a/text()')
四.向每个主题发送请求(为了获得每个主题完整的图片)并且不断翻页获取图片的二进制数据和名字
以下给出完整的代码:
总结:单单使用request库的话,爬取的效率极低,我们可以用多线程的办法去提升我们的爬取速度,至于如何用多线程实现这个功能呢,我本人能力有限还没学到那个地步,以后学到了我会给大家分享我的经验= =
不过用scrapy框架的话,相对来说强大一点,它内部已经实现了多线程,高并发的功能,我们只需要把spider部分编写好就可以了。
下一篇文章我就和大家谈谈用scrapy爬取妹子网的步骤吧