zhihu是一个知乎话题内容的爬虫,可以爬取知乎所有的话题相关的问答内容,爬虫框架使用scrapy,数据存储使用mongo。由于知乎话题的问答内容信息巨大(亿级数据量),这里只是爬取了话题广场的“阅读”话题下的所有子话题下的精华问题与回答的相关信息。
- Windows 10 专业版
- Python 3.5/Scrapy 1.5.0/MongoDB 3.4.7
- Requests
- Pymongo
- Faker(随机切换User-Agent)
知乎话题广场有33个父话题,每个父话题有不同数量的子话题,每个子话题下又有很多的精华问题,每个精华问题下有不同数量的回答,如果想要完全爬取所有的问答,由于数据量太大,耗时太久。这里选择了“阅读”话题进行数据爬取。知乎的子话题、精华问答的内容都是采用动态加载的方法进行更新获取的,在分析了其动态加载链接后,从当前页面获取链接所需的参数并构造正确的链接,进行了三级深入的爬取。爬取过程中设置下载延迟为1S,知乎没有对这种低频率的访问做限制。
-
请求(https://www.zhihu.com/topics) 获取页面中所有的父话题及其id,父话题的链接需要POST请求,需要其id。