可以说爬虫是学习 Python 的入门必修课。当能独立写出第一个完整的爬虫的时候,我们已经迈出了一大步。因为在这过程中,我们已经学会了如何查看文档,学会使用 Python 相关库的操作,怎样使用 Chrome 的开发者工具(相关工具)和把抓取的数据保存到数据库中等等一系列操作,当然收获最多的还是学习 Python 的自信心。
下面以抓取知乎图片为例,迈出我们自学 Python 爬虫的第一步。
整体思路
在浏览知乎的时候,经常会看到一些有趣的问题,例如有什么万能表情包?,回答中网友分享了收藏多年的表情。但是近1500多条回答,手动保存表情不现实,所以使用爬虫帮我们完成这项工作。
首先我们需要做的是收集此类问题。获取问题的 ID(URL 中 question 后的 ID),构建爬虫任务池。收集问题的工作可以交给爬虫,但是为了抓取的图片都符合预期,建议先手动收集此类问题。然后将问题的 ID 存入数据库中,爬虫运行时读库获取需要爬取的目标贴。通过写一个爬虫,生成任务池多线程调用。将获取到的答案数据清洗,只收集答案中的图片。本案例我们使用 mongo 数据库,因为 mongo 数据库简单方便,也方便我们之后增减字段。
存入库中的结构和知乎的类似:答案集合保存所有答案,每一个答案是一条独立的文档。
具体类似这种结构:
-
{
-
"Answer": [
-
{
-
"id"