Python爬虫爬取知乎文章(含js反爬)
最近的业务要求去写一个关于知乎的爬虫,在这记录一下在爬取过程中出现的问题以及解决方法
知乎链接:https://www.zhihu.com/
众所周知,知乎是需要登录的。
登录以后,搜索一个关键字,我这里搜索 奥运会
在这里想要获取每一条内容的标题和第一条用户回答(就是点击阅读全文后的内容):
而且想要获取多条,比如100条,需要怎么做呢?
先看一下知乎展现内容容的机制,发现鼠标滚轮往下滑的时候,内容被一点一点加载出来了,这里显然是用的ajax加载。
知道了加载方式后,打开开发者工具找一下ajax的来源:
找到ajax加载的链接就是:https://www.zhihu.com/api/v4/search_v3?t=general&q=%E5%A5%A5%E8%BF%90%E4%BC%9A&correction=1&offset=27&limit=20&filter_fields=&lc_idx=27&show_all_topics=0&search_hash_id=22259bd69d7464f7596baea3a0a88cb3&vertical_info=0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C1
再来看一下响应出来的json内容:
内容也找到后,接下来就开始写爬虫程序了获取响应内容了。
先来剖析一下url主要组成部分:
https://www.zhihu.com/api/v4/search_v3?t=general&q=%E5%A5%A5%E8%BF%90%E4%BC%9A&correction=1&offset=27&limit=20&filter_fields=&lc_idx=27&show_all_topics=0&search_hash_id=22259bd69d7464f7596baea3a0a88cb3&vertical_info=0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C1