爬虫抓取模块介绍及实战
优采云 发布时间: 2022-06-18 23:41爬虫抓取模块介绍及实战
皮卡丘联合爬虫业界大牛FastGets整理,介绍python爬虫基础知识、大牛多年反爬经验,有难度网站抓取实战、爬虫系统架构设计、安卓app逆向分析。帮助小白入门,初级工程师成为资深工程师,大神回顾。大家有任何问题可留言交流,欢迎转发分享。
爬虫简单来讲,就是将网页下载下来,解析并提取我们所需要的信息,然后将这些信息存入数据库。
这篇文章主要介绍怎么将网页下载下来。我们使用36kr新闻抓取作为例子,网址为。
一、使用谷歌浏览器Chrome进行抓包分析
1. 使用谷歌浏览器打开这个网址,可以看到最新文章的列表。打开开发者工具,如下图。
2. 刷新这个文章列表页面,然后查看开发者工具network里面的信息,里面的信息比较多,因为html页面刚开始一般会加载js和css文件,我们不去管这些。我们抓取的是文本信息,所有我们一般查看type类型为docment和xhr的。docment类型一般的返回结果是html源码,xhr请求的返回结果一般是json格式。如下图。
3. 皮卡丘查看了docment类型和xhr类型的请求返回的数据,发现是这条请求的返回结果。我们知道这条请求的返回结果即是网页源码,我们点击鼠标右键,点击显示网页源码,如下图,可以看到我们要的数据在js代码的props这个变量里面。
一般我们可以解析这个页面获取数据,props这个变量的值是一个json字符串。一般像这样的json嵌在源码里面的列表页面,在用户翻页的时候,会有一个xhr请求,返回下一页的json数据。所以我们不用这里的数据。
鼠标往下滚动,触发翻页,有一个xhr请求,返回的结果,即是我们需要的文章列表页面的数据,如下图。
找到了数据所需要的链接后,点击headers,如下图。
可以看到有4部分:
(1)General一般包括请求的url,请求方法(get或者post),http请求服务器返回的状态码,200说明请求成功。
(2)Response Headers 是服务器返回的headers信息,一般会向浏览器设置cookie信息什么的,这里我们先不管。
(3)Request Headers 这一部分对于我们爬虫比较重要,是浏览器向服务器请求头信息,包括了浏览器当前状态的信息。一般我们要注意Cookie, Host, Referer, User-Agent等信息。
(4)Query String Parameters 请求参数,get方法请求即是url的问号后面那些东西,post方法是一些表单数据或者一些敏感信息,post方法参数在传输过程中会加密,所以post方法请求,保密性比较好。
到这里这个页面的抓包分析结束,Chrome抓包分析就是要找到我们所需要的数据是哪条请求链接,以及这个请求链接的Request Headers的参数和Query String Parameters参数。下面我们写代码实现。
二、Python3 requests模块获取数据
Python标准库中提供了urllib模块来进行http请求,但是这个包的api太烂了,对程序员不太友好,皮卡丘在这里使用requests模块,这个模块在python内置模块的基础上进行了高度封装,使用起来比较方便,可以比较简单的完成类似浏览器的各种操作。
1. requests实现GET请求代码
2. requests 实现POST请求代码
3. 我们为了调用方便,写一个调用函数
4. resquests 抓取36kr新闻列表页
从第一部分抓包分析可知:
(1)url为
(2)请求方法为get
(3)请求参数为per_page=20&page=2&_=96,从参数可知per_page=20是每页展示20篇文章,page=2为第2页,_=96即 _ 这个参数是请求当前时间点的时间戳
(4)headers当中的参数,一般比较重要的是:User-Agent, Referer, Host, Cookie等。如果遇到反爬,首先我们检查的就是headers,在可以获取到数据的情况下,headers里面的参数可以尽量少,获取不到的情况,就多添加一些,直到能够获取到数据。
5. 下面我们来实现抓取36kr新闻的列表页面
抓取完了列表页面,可以看到,我们获取到的数据是json格式的,我们用python3内置的json模块,就可以解析获取到相应的值。
下面介绍怎么抓取文章封面图片
运行之后即可看到图片存到了本地。
如果大家感兴趣的话,可以用Chrome对文章详情页进行抓包分析,然后对文章详情页面进行抓取。这里皮卡丘直接给出代码。
抓包分析可知文章详情页我们抓取到的是html源码,不是json格式的数据,下一篇文章我们将会对html源码解析进行详细讲解。
以后每篇文章的代码都可以在github的CrawlArticles仓库查看:
喜欢的话,点个赞呗!