request模块
Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库。
实例引入
import requests
url = 'http://www.baidu.com'
response = requests.get(url)
print(response)
print(response.status_code)
print(response.cookies)
print(response.text)
print(type(response.text))
常见的请求方式
import requests
response = requests.post('http://httpbin.org/post', data={'name' : 'fentiao', 'age':10})
print(response.text)
response = requests.delete('http://httpbin.org/delete', data={'name' : 'fentiao'})
print(response.text)
带参数的get请求
# url1 = 'https://movie.douban.com/subject/4864908/comments?start=20&limit=20&sort=new_score&status=P'
import requests
data = {
'start': 20,
'limit': 40,
'sort': 'new_score',
'status': 'P',
}
url = 'https://movie.douban.com/subject/4864908/comment'
response = requests.get(url, params=data)
print(response.url)
解析json格式
import requests
# ip = '8.8.8.8'
ip = input("请输入查询的IP:")
url = "http://ip.taobao.com/service/getIpInfo.php?ip=%s" %(ip)
response = requests.get(url)
content = response.json()
print(content)
print(type(content))
获取二进制格式
import requests
url = 'https://gss0.bdstatic.com/-4o3dSag_xI4khGkpoWK1HF6hhy/baike/w%3D268%3Bg%3D0/sign=4f7bf38ac3fc1e17fdbf8b3772ab913e/d4628535e5dde7119c3d076aabefce1b9c1661ba.jpg'
response = requests.get(url)
print(response.content)
with open('github.png', 'wb') as f:
# response.text : 返回字符串的页面信息
# response.content : 返回bytes的页面信息
f.write(response.content)
添加headers信息
import requests
url = 'http://www.cbrc.gov.cn/chinese/jrjg/index.html'
user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0'
headers = {
'User-Agent': user_agent
}
response = requests.get(url, headers=headers)
print(response.text)
print(response.status_code)
response对象常用属性
import requests
url = 'http://www.cbrc.gov.cn/chinese/jrjg/index.html'
user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0'
headers = {
'User-Agent': user_agent
}
response = requests.get(url, headers=headers)
print(response.text)
print(response.content)
print(response.status_code)
print(response.headers)
print(response.url)
上传文件
# ** 上传文件
import requests
# 上传的数据信息(字典存储)
data = {'file':open('github.png', 'rb')}
response = requests.post('http://httpbin.org/post', files=data)
print(response.text)
获取cookie信息
import requests
response = requests.get('http://www.youkuaiyun.com')
print(response.cookies)
for key,value in response.cookies.items():
print(key + '=' + value)
会话对象保持cookie信息
会话对象让你能够跨请求保持某些参数。它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 urllib3 的 connection pooling 功能。
import requests
# 上传的数据信息(字典存储)
# 设置一个cookie: name='westos'
s = requests.session()
response1 = s.get('http://httpbin.org/cookies/set/name/westos')
response2 = s.get('http://httpbin.org/cookies')
print(response2.text)
忽略证书验证
import requests
url = 'https://www.12306.cn'
response = requests.get(url, verify=False)
print(response.status_code)
print(response.text)
设置代理/设置超时
import requests
proxy = {
'https': '171.221.239.11:808',
'http': '218.14.115.211:3128'
}
response = requests.get('http://httpbin.org/get', proxies=proxy, timeout=10)
print(response.text)