本文主要介绍了在python中使用request发送http请求
更新于 2021-06-14
安装
使用下面的命令安装requests:
发送GET请求
1 2 3
| import requests
response = requests.get("http://www.baidu.com/")
|
同时支持添加header参数:
1 2 3 4 5 6 7 8
| import requests
kw = {'wd':'中国'}
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
response = requests.get("http://www.baidu.com/s", params=kw, headers=headers)
|
获取响应信息可以使用下面的命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| response.text
response.content
response.url
response.encoding
response.status_code
|
发送POST请求
1 2 3
| import requests
response = requests.post("http://www.baidu.com/",data=data)
|
传入post数据可以使用如下的格式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import requests
url = "https://www.lagou.com/jobs/positionAjax.json?city=%E6%B7%B1%E5%9C%B3&needAddtionalResult=false&isSchoolJob=0"
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36', 'Referer': 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=' }
data = { 'first': 'true', 'pn': 1, 'kd': 'python' }
resp = requests.post(url,headers=headers,data=data) print(resp.json())
|
通过代理
使用requests添加代理也非常简单,只要在请求的方法中(比如get或者post)传递proxies参数就可以了。例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import requests
url = "http://httpbin.org/get"
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36', }
proxy = { 'http': '171.14.209.180:27829' }
resp = requests.get(url, headers=headers, proxies=proxy) with open('xx.html','w',encoding='utf-8') as fp: fp.write(resp.text)
|
cookie和session
如果在一个响应中包含了cookie,那么可以利用cookies属性拿到这个返回的cookie值:
1 2 3 4 5 6 7
| import requests
url = "http://www.renren.com/PLogin.do" data = {"email":"970138074@qq.com",'password':"pythonspider"} resp = requests.get('http://www.baidu.com/') print(resp.cookies) print(resp.cookies.get_dict())
|
使用requests库给我们提供的session对象可以达到共享cookie的目的。这里的session不是web开发中的那个session,这个地方只是一个会话的对象而已。例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import requests
url = "http://www.renren.com/PLogin.do" data = {"email":"111111111@qq.com",'password':"pythonspider"} headers = { 'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36" }
session = requests.session() session.post(url,data=data,headers=headers)
resp = session.get('http://www.renren.com/880151247/profile')
print(resp.text)
|
不受信的证书
对于不受信任的https站点,可以使用如下的方式进行访问:
1 2 3 4
| import requests
resp = requests.get('http://www.12306.cn/mormhweb/',verify=False) print(resp.content.decode('utf-8'))
|