1.前言
本次程序主要使用requests抓取知网公开专利信息用于毕业论文,爬取过程中遇到很多反爬措施,非常不容易,希望给大家带来一些参考。
2.爬虫准备
(1)查找接口信息
使用requests库抓取数据,首先需要找到接口在哪里:先准备好我们需要的高级搜索条件,然后开打F12开发者模式,点击network,最后点击搜索就可以看到接口信息
![](https://i-blog.csdnimg.cn/blog_migrate/a97868c8cc3bdfb547411646ebbde857.png)
(2)构造请求头和请求参数
构造好请求头和参数后请求可以得到所有数据的html代码
![](https://i-blog.csdnimg.cn/blog_migrate/f4b6d6829c9b0294286f79215c75233f.png)
3.选择发明公开分类
查看接口后发现接口请求参数多了一个SearchSql,经查找发现这个参数再上述接口中的html代码中
接下来解析出来这个参数应用于公开发明分类接口请求
![](https://i-blog.csdnimg.cn/blog_migrate/114af6cc44db5ae233d8d04ad56281ba.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5759370cafded83a1ec101a2598f6758.png)
4.对公开发明分类第一页和其他多页请求构造参数
第一页请求参数中的IsSearch参数为ture ,其他页为false
第一页请求参数中的SearchSql参数为第三步中获取到的数据,第二页中的为第一页中获取到的Search SQL。
page初始值为1,后面page为第一页解析出数据量总和除以20(向上取整)循环得到
![](https://i-blog.csdnimg.cn/blog_migrate/ed1156ea683bb090cf8da439cdcc5611.png)
5.构造详细页面url得到数据
经过第4步可以得到所有专利得href链接,循环将https://kns.cnki.net/跟href拼接得到详情页url
该页面可以直接使用get请求,不加请求头也可以访问,为了保护国家网站,做好每次访问睡眠1秒
6.其他需要注意得反爬
在第四步访问15 页就会弹出验证码,解决方法为使用多个cookie,随机访问可跳过验证码,也可以提升抓取速度。
有些数据可能获取不到,这就需要你认真观察了