写在前面
对于刚刚入门Python爬虫的小伙伴来说,爬妹子图那是为了缓解学习的枯燥。你学Python是不是有点枯燥了呢?下面看小编来一步一步教你吧~
项目说明:
1、项目介绍
本项目使用Python提供的协程+scrapy中的选择器的使用(相当好用)实现爬取妹子图的(福利图)图片,这个学会了,某榴什么的、pow(2, 10)是吧!
2、用到的知识点
本项目中会用到以下知识点
① Python的编程(本人使用版本3.6.2)
② 使用scrapy中的css选择器
③ 使用async协程
④ 使用aiohttp异步访问url
⑤ 使用aiofiles异步保存文件
3、 项目效果图
项目实现:
我们最终的目的是把图片的标题替换成需要保存的目录,下面的图片呢,就按着网页上图片的名称保存~,有了这个需求以后,ok,社会我demon哥,人很话不多,开干!
我们需要网站的入口,入口如下~就爬取萌妹子吧!
妹子图中萌妹分类的网站入口:http://www.meizitu.com/a/cute.html
打开萌妹子的入口链接以后,我们需要分析下网页中结构,然后通过分析页面,获取我们有用的内容:
通过入口我们得知,url地址中,有两个我们需要关系的点,一个是妹子图的妹子类型,一个是要获取页面的页码,如果获取多页的话,也就是替换成不同的页码即可(图如下)
分析完上面的页面以后,我们在来分析当前页中需要提取的信息 ,使用Chrome浏览器打开开发者模式(windows是F12,MacOS是command+option+i)
点击刚刚选中妹子的url的地址,我们在来分析这里面的有用信息
信息提取就到这里,我们下面需要使用css选择器,提取url然后开始写方法,来下载这些图片
没有安装的scrapy的赶紧去pip3 install scrapy一下,要么您老就右上角的小叉叉退出吧~ 不然没办法进行了!
Scrapy提供一个Shell的参数命令了,在这个参数后面加上你要提取页面中的url地址,就可以进入到scrapy shell中,在里面可以通过css xpath选择器调试提取信息,用法如下:
在终端输入: scrapy shell http://www.meizitu.com/a/cute.html
出现上面的即可,这里面有个response,我们可以通过response.css或者reponses.xpath获取url的数据,ok..我这里使用css来提取,为嘛?! 简单呗~
css的具体语法嘛~~大家不会的话,可以自行百度,或者去菜鸟站补一补知识,我这人比较懒,我就不讲了!直接告诉你们怎么提取吧~可以通过Chrome给我提供的开发者工具来获取css选择器的表达式,请看下图
上面图的图很眼熟对吧,嗯,这是哪个主页图,我们需要在当前页面中获取所有妹子的url地址,然后在进入到每个妹子的url地址中获取这个妹子的所有图片!首先先来获取当前页面的所有妹子的url地址,切换到scrap shell中,通过response.css来提取信息