这次呢,笔者给大家分享的是爬取知乎的妹子图,嗯,你懂的。
话不多说,直接看战果。
嗯,还是很不错的,值得我们去爬取。下面说一下整个过程的实现。
页面分析
本次爬取的是知乎话题下所有回答的所有图片,如下
我们可以看到这个话题有个回答,所以呢,爬取的图片也是很多的,共爬取了张图片。
我们知道我们要爬取的是图片,然后图片呢是嵌套在内容当中的,所以我们只要能找到怎么获取到内容,就能将图片爬取下来。
我们按f12进行开发者模式,在右边的name中找到了answers为开头的名。
通过英文名字,我们猜测这个可能就是我们要找的内容,打开右边的Request URL,看到了一大堆数据,包括id,用户名,当然,也包含我们要找的内容。如果感觉看不清这些数据,可以放到 在线json校验工具进行解析。可以看到,里面有个content属性,里面就是用户回答的内容,图片的链接就包括在里面。
现在呢,我们知道要怎么获取数据了,但还有一个问题,就是怎么爬取全部用户的回答内容,因为刚才的链接只能取到前3个用户的回答。通过链接我们发现里面有两个参数可以改变,分别是offset和limit,通过英文单词可以知道前者是指偏移量,即查询的数据从哪一个回答开始,后者是最多展示的回答数量。所以呢,会点英语还是挺重要的。
然后笔者通过试验,发现了limit最大是,所以我们只要改变offset就行,limit固定为。
代码爬取
首先就是要获得所有页面数据的url
之后我们通过json解析和正则表达式匹配获得图片的url
最后就是将二进制数据写进图片中,即下载图片
之后运行,等待了漫长的时间,终于下载完了。如图,用了秒,几分钟。
这个过程感觉太久了,所以改了一下程序,用多线程下载。
加上上述代码就行。
如上,快了好几倍。
最后,公众号【python编程之美】后台回复“妹子图”即可获得本文所有代码文件和所有图片,还包括福利哦。对了,大家一定要保重身体。别说了,我去补充营养了。