在初学爬虫(二):爬取静态网页之(2)获取网页响应内容——requests.get()函数中讲解了如何使用requests函数获取网页响应内容。
但是,有些网页不能如上直接被获取,而是需要对requests中的参数进行设置才能获取需要的数据。
1、设置传递URL(网络地址)参数
如果需要请求获取特定的数据,就需要在URL(网络地址)的查询字符串中加入一些数据来实现。
在requests中,直接使用params参数就可以实现设置URL参数:
python">import requests
key_dict = {'k1': 'v1', 'k2': 'v2'} #创建一个字典
r = requests.get('http://httpbin.org/get', params=key_dict) #用params参数将字典内容构建到URL中
print ("设置URL参数后的网址:", r.url)
print ("设置URL参数后的网址的内容: \n", r.text)
原网址http://httpbin.org/get内容:
设置URL参数后的网址http://httpbin.org/get?k1=v1&k2=v2内容:
可以发现我们设置的参数内容已经加进了网页的内容中。
2、自定义请求头
(1)怎么找请求头?
以找谷歌浏览器的请求头为例:
进入谷歌浏览器在页面右键 > 检查 > 选择network
在name栏中任意选择一项
例如我这里选择第一项:
在新出现的菜单栏中选择headers > request headers
滑到最下面出现的user-agent即为谷歌浏览器的请求头
查看其它浏览器的请求头与上述方法相似!!!
(2)自定义请求头
python">import requests #导入requests库
#更改请求头
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36',#伪装为谷歌浏览器
#使用requests.get()函数获取指定网页的内容,返回的是一个response相应对象(里面存储了服务器相应的内容)
r = requests.get('https://www.csdn.net/', headers=headers) #获取目标网页内容
print("服务器内容使用的文本编码:",r.encoding)
print("状态响应码:",r.status_code)#返回200,表示请求成功;返回4xx,表示客户端错误;返回5xx,表示服务器错误响应。
print("服务器响应的内容:\n",r.text)
}
由上图可知我们成功的爬取了目标网页的内容。