今天介绍个神奇的网站!堪称爬虫偷懒的神器!
我们在写爬虫,构建网络请求的时候,不可避免地要添加请求头( headers ),以 mdn 学习区为例,我们的请求头是这样的:
一般来说,我们只要添加 user-agent
就能满足绝大部分需求了,Python 代码如下:
import requests
headers = {
#'authority': 'developer.mozilla.org',
#'pragma': 'no-cache',
#'cache-control': 'no-cache',
#'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 YaBrowser/19.7.0.1635 Yowser/2.5 Safari/537.36',
#'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
#'accept-encoding': 'gzip, deflate, br',
#'accept-language': 'zh-CN,zh-TW;q=0.9,zh;q=0.8,en-US;q=0.7,en;q=0.6',
#'cookie': 你的cookie,
}
response = requests.get('https://developer.mozilla.org/zh-CN/docs/learn', headers=headers)
但是有些请求,我们要把特定的 headers
参数添加上才能获得正确的网络响应,不知道哪个参数是必要的情况下,就要先把所有参数都添加上,再逐个排除。
但是手动复制粘贴 headers
字典里的每一个键值对太费事了
一个不那么方便的解决方案:
用正则表达式或者直接字符串替换,把 headers 字符串直接转化为字典,封装成函数方便以后反复调用。
有的人喜欢用这种方法,每次复制headers信息,然后调用自己封装好的函数,但我觉得还是挺麻烦的。
那么还有没有快速一键生成 Python 爬虫请求头的方法呢?
这里给大家介绍两个:
- 网站在线转换
- Postman
实战演练
抓取网站:https://developer.mozilla.org/zh-CN/docs/learn
网站在线转换
1、Chrome 打开开发者选项( f12
)—> network
选项卡 —> 刷新页面,获取请求 —> 找到页面信息对应的请求 (通过请求的名称、后缀和 response
内容来判断)
2、右键,copy
—> copy as cURL (bash)
注意不是【copy as cURL (cmd)】
3,打开网站,https://curl.trillworks.com,粘贴 cURL (bash)
到左边 curl command
,右边会自动出 Python
代码
4、生成代码如下图
5、print(response.text)
就可以直接打印网页源代码啦!
Postman
1、下载 postman
(Chrome也有个postman的插件,操作应该差不多)
2、打开 postman
,弹出的界面可以直接关掉
3、import
--> paste raw text
,在 Chrome
里复制 curl (bash)
,粘贴到下面的对话框里,点击 import
按钮
4、点击 send
,模拟网络请求,下方可查看源代码
5、确保源代码正常后,点击 code
6、左上角可以选择编程语言,右上角复制到剪贴板
大功告成!
其实我本人平时都是用第一种,网站比较稳定,基本没出现过异常;有了这个神器就不用自己再构造请求头了,先一键生成,然后再根据需求调一调就好了,几秒钟就搞定了。