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

Python101

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学长

相关文章
Python

【动画笔记】二分查找(折半查找)

进入大二以来一直把学数据结构和算法这事藏在心里,毕竟大学破事太多了,最近实在是按捺不住了。拿起《算法图解》,结合网络上的总结,准备循序渐进入门数据结构和算法... 目前笔记里代码示例我都是用的 Pyt...
Python

在centos8使用Docker部署Django项目

引言 在本文中将介绍在Docker中通过django + uwsgi + nginx部署方式部署Django项目, 由于记录的是学习过程,使用的都是目前较高的版本。 python 版本为3.8.3 d...
Python

Python3基础教程:return和yield的区别

一、说明 return一直中,每中语言中其没没有很大差别,就不多说了。(shell语言return的是退出状态,可能差别是比较大的) 最早看到yield应该是哪们语言用来调整什么线程优先级的,记不清了...
Python

【OS】期末总结复习

文章目录 * - 操作系统复习 - + 1. 知识点概念梳理: + 期末总复习 + * 第一章 操作系统引论 * 第二章 进程和线程 * 进程的状态 * 第三章 死锁 * 第四章 调度 * 第五章 存...
Python

Linux 升级 Python 至 3.x

简述 CentOS 7 中默认安装了 Python,版本比较低(2.7.5),为了使用新版 3.x,需要对旧版本进行升级。 由于很多基本的命令、软件包都依赖旧版本,比如:yum。所以,在更新 Pyth...
Python

python处理时间戳、时间计算等的几个小脚本

由于实际需要,简要写了个小脚本,并打包生成exe,供无网络环境下使用 脚本1:显示当前时间与时间戳,以及10分钟后的时间与时间戳 脚本2:显示当前时间与时间戳,以及10分钟后的时间与时间戳,允许根据输...