最新!Python爬虫爬取知乎文章内容(解决最新js反爬2021.8)

Python188

Python爬虫爬取知乎文章(含js反爬)

最近的业务要求去写一个关于知乎的爬虫,在这记录一下在爬取过程中出现的问题以及解决方法

知乎链接:https://www.zhihu.com/
众所周知,知乎是需要登录的。
登录以后,搜索一个关键字,我这里搜索 奥运会
最新!Python爬虫爬取知乎文章内容(解决最新js反爬2021.8)
在这里想要获取每一条内容的标题和第一条用户回答(就是点击阅读全文后的内容):

最新!Python爬虫爬取知乎文章内容(解决最新js反爬2021.8)
而且想要获取多条,比如100条,需要怎么做呢?
先看一下知乎展现内容容的机制,发现鼠标滚轮往下滑的时候,内容被一点一点加载出来了,这里显然是用的ajax加载。
知道了加载方式后,打开开发者工具找一下ajax的来源:

最新!Python爬虫爬取知乎文章内容(解决最新js反爬2021.8)
找到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内容:
最新!Python爬虫爬取知乎文章内容(解决最新js反爬2021.8)
内容也找到后,接下来就开始写爬虫程序了获取响应内容了。
先来剖析一下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

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长