python3爬虫(一):请求库之requests
Request是基于urllib编写、采用Apache2 Licensed开源协议的HTTP库,在使用方面Requests比urllib更加方便
一、HTTP请求
1. GET
requests.get(url [, params={‘key’: ‘value’}])
- 通过url的查询字符串传递数据时,数据以键值对的形式跟在url的一个问号之后
- Requests允许使用params关键字参数传递数据
注意:
- 字典中值为None的键不会添加到查询字符串中
- 键值可以是列表
import requests
# 无查询字符串
res1 = requests.get('http://www.baidu.com')
# 有查询字符串
data2 = {
'key1': 'value1',
'key2': 'value2'
}
res2 = requests.get('http://www.xxx.com', params=data)
print(res2) # http://www.xxx.com?key1=value1&key2=value2
# 查询字符串中有列表
data3 = {
'key1': 'value1',
'key2': ['value2', 'value3']
}
res3 = requests.get('http://www.xxx.com', params=data)
print(res3) # http://www.xxx.com?key1=value1&key2=value2&key2=value3
2. POST
requests.post(url [, data={‘key’: ‘value’}, json={‘key’: ‘value’}])
- 以字典形式提交表单数据
- 可以传入一个元组列表,尤其是表单中多个元素使用同一key
- 发送数据并非编码为表单形式。如传递一个string,会被直接发布出去
- 除自行对dict进行编码,可以使用json参数直接传递,会被自动编码
import requests
url = 'http://www.xxx.com'
# 传递字典
data1 = {
'name': '12345',
'age': '23'
}
res1 = requests.post(url, data=data1)
# 传递元组
data2 = (('key1', 'value1'), (&