如何使用Python requests库中的url模块进行请求处理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计772个文字,预计阅读时间需要4分钟。
文章目录
1.简介
2.安装
3.方法
3.1 发送带参数的GET请求 3.2 发送带数据的POST请求 3.3 POST也可用于上传文件 3.4 设置与查看请求
文章目录
- 1. 简介
- 2. 安装
- 3. 方法
- 3.1 发送带参数的get请求
- 3.2 发送带数据的post请求
- 3.3 post也可以用于上传文件
- 3.4 设置与查看请求头(headers)
- 3.5 代理Proxy
- 3.6 保存cookies
1. 简介
requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?
2. 安装
pip install requests3. 方法
import requests
HTTP请求:GET、POST、PUT、DELETE、HEAD、OPTIONS
requests.post("xxxx.com/post", data = {'key':'value'})
requests.put("xxxx.com/put", data = {'key':'value'})
requests.delete("xxxx.com/delete")
requests.head("xxxx.com/get")
requests.options("xxxx.com/get")
为URL传递参数
requests模块使用params关键字参数,以一个字典的形式来提供参数。
>>> payload = {'key1':'value','key2':'value2'}
>>> res = requests.get("www.zhidaow.com') # 发送请求
>>> r.status_code # 返回码
200
>>> r.headers['content-type'] # 返回头部信息
'text/html; charset=utf8'
>>> r.encoding # 编码信息
'utf-8'
>>> r.text #内容部分(PS,由于编码问题,建议这里使用r.content)
u'\n
...
>>> res.json()
>>> res.raw
response.text和response.content的区别在于:
- response.text是解过码的字符串(比如html代码)。当requests发送请求到一个网页时,requests库会推测目标网页的编码,并对其解码,转为字符串(str)。这种方法比较容易出现乱码。
- response.content是未解码的二进制格式(bytes),不仅支持文本内容,还适用于二进制文件内容如图片和音乐等。如果需要把文本内容转化为字符串,一般使用response.content.decode(‘utf-8’)方法即可。
3.1 发送带参数的get请求
import requestsparams = {
"wd": "python", "pn": 10,
}
response = requests.get('www.baidu.com/s', params=params)
print(response.url)
print(response.text)
3.2 发送带数据的post请求
import requestspost_data = {'username': 'value1', 'password': 'value2'}
response = requests.post("xxx.com/login/", data=post_data)
response.raise_for_status()
3.3 post也可以用于上传文件
>>> import requests>>> url = 'www.baidu.com", headers=headers)
response2 =requests.post("www.xxxx.com", data={"key": "value"},
headers=headers)
print(response1.headers)
print(response1.headers['Content-Type'])
print(response2.text)
3.5 代理Proxy
有的网站反爬机制会限制单位时间内同一IP的请求次数,这时我们可以通过设置IP proxy代理来应对这个反爬机制。requests里设置proxy也非常简单,如下面代码所示。
import requestsproxies = {
"10.10.1.10:3128",
"10.10.1.10:1080",
}
requests.get("example.org", proxies=proxies)
3.6 保存cookies
cookies = requests.cookies.RequestsCookieJar()def login(endpointip):
endpoint = "" + endpointip + ":8080/upcdb_manager/v1.0/login"
header = {}
header['Content-Type'] = "application/json"
payload = {
"loginName": username,
"password": password
}
response = requests.request("POST", endpoint, data=json.dumps(payload),headers=header)
return response.cookies
if __name__ == '__main__':
cookies = login('192.168.1.19')
url = 'www.baidu.com/xxx'
r = requests.get(url,cookies=cookies)
本文共计772个文字,预计阅读时间需要4分钟。
文章目录
1.简介
2.安装
3.方法
3.1 发送带参数的GET请求 3.2 发送带数据的POST请求 3.3 POST也可用于上传文件 3.4 设置与查看请求
文章目录
- 1. 简介
- 2. 安装
- 3. 方法
- 3.1 发送带参数的get请求
- 3.2 发送带数据的post请求
- 3.3 post也可以用于上传文件
- 3.4 设置与查看请求头(headers)
- 3.5 代理Proxy
- 3.6 保存cookies
1. 简介
requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?
2. 安装
pip install requests3. 方法
import requests
HTTP请求:GET、POST、PUT、DELETE、HEAD、OPTIONS
requests.post("xxxx.com/post", data = {'key':'value'})
requests.put("xxxx.com/put", data = {'key':'value'})
requests.delete("xxxx.com/delete")
requests.head("xxxx.com/get")
requests.options("xxxx.com/get")
为URL传递参数
requests模块使用params关键字参数,以一个字典的形式来提供参数。
>>> payload = {'key1':'value','key2':'value2'}
>>> res = requests.get("www.zhidaow.com') # 发送请求
>>> r.status_code # 返回码
200
>>> r.headers['content-type'] # 返回头部信息
'text/html; charset=utf8'
>>> r.encoding # 编码信息
'utf-8'
>>> r.text #内容部分(PS,由于编码问题,建议这里使用r.content)
u'\n
...
>>> res.json()
>>> res.raw
response.text和response.content的区别在于:
- response.text是解过码的字符串(比如html代码)。当requests发送请求到一个网页时,requests库会推测目标网页的编码,并对其解码,转为字符串(str)。这种方法比较容易出现乱码。
- response.content是未解码的二进制格式(bytes),不仅支持文本内容,还适用于二进制文件内容如图片和音乐等。如果需要把文本内容转化为字符串,一般使用response.content.decode(‘utf-8’)方法即可。
3.1 发送带参数的get请求
import requestsparams = {
"wd": "python", "pn": 10,
}
response = requests.get('www.baidu.com/s', params=params)
print(response.url)
print(response.text)
3.2 发送带数据的post请求
import requestspost_data = {'username': 'value1', 'password': 'value2'}
response = requests.post("xxx.com/login/", data=post_data)
response.raise_for_status()
3.3 post也可以用于上传文件
>>> import requests>>> url = 'www.baidu.com", headers=headers)
response2 =requests.post("www.xxxx.com", data={"key": "value"},
headers=headers)
print(response1.headers)
print(response1.headers['Content-Type'])
print(response2.text)
3.5 代理Proxy
有的网站反爬机制会限制单位时间内同一IP的请求次数,这时我们可以通过设置IP proxy代理来应对这个反爬机制。requests里设置proxy也非常简单,如下面代码所示。
import requestsproxies = {
"10.10.1.10:3128",
"10.10.1.10:1080",
}
requests.get("example.org", proxies=proxies)
3.6 保存cookies
cookies = requests.cookies.RequestsCookieJar()def login(endpointip):
endpoint = "" + endpointip + ":8080/upcdb_manager/v1.0/login"
header = {}
header['Content-Type'] = "application/json"
payload = {
"loginName": username,
"password": password
}
response = requests.request("POST", endpoint, data=json.dumps(payload),headers=header)
return response.cookies
if __name__ == '__main__':
cookies = login('192.168.1.19')
url = 'www.baidu.com/xxx'
r = requests.get(url,cookies=cookies)

