requests库里面直接就有请求方法post和get等,不用像urlopen处理请求那样冗余
import requests
r = requests.get('https://www.baidu.com/')
print(type(r))
print(r.status_code)
print(type(r.text))
print(r.text)
print(r.cookies)
这样就能请求了,以下介绍怎么加headers,timeout,file,data,代理,验证等
r = requests.post('http://httpbin.org/post')
r = requests.put('http://httpbin.org/put')
r = requests.delete('http://httpbin.org/delete')
r = requests.head('http://httpbin.org/get')
r = requests.options('http://httpbin.org/get')
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
}
r = requests.get("https://www.zhihu.com/explore", headers=headers)
data = {
'name': 'germey',
'age': 22
}
r = requests.get("http://httpbin.org/get", params=data)
#添加data
data = {'name': 'germey', 'age': '22'}
r = requests.post("http://httpbin.org/post", data=data)
#上传file
files = {'file': open('favicon.ico', 'rb')}
r = requests.post('http://httpbin.org/post', files=files)
r = requests.get('https://www.baidu.com')
print(r.cookies)
for key, value in r.cookies.items():
print(key + '=' + value)
#cookies设置
headers = {
'Cookie': '自己的cookies',
'Host': 'www.baidu.com',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36',
}
r = requests.get('https://www.baidu.com', headers=headers)
#另一种比较麻烦的
cookies = '自己的'
jar = requests.cookies.RequestsCookieJar()
headers = {
'Host': 'www.baidu.com',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36'
}
for cookie in cookies.split(';'):
key, value = cookie.split('=', 1)
jar.set(key, value)
r = requests.get('http://www.baidu.com', cookies=jar, headers=headers)
#代理
proxies = {
'http': 'http://10.10.1.10:3128',
'https': 'http://10.10.1.10:1080',
}
requests.get('https://www.baidu.com', proxies=proxies)
#验证
from requests.auth import HTTPBasicAuth
r = requests.get('http://localhost:8000', auth=HTTPBasicAuth('username', 'password'))
可以直接传一个元组,它会默认使用 HTTPBasicAuth 这个类来认证。
r = requests.get('http://localhost:5000', auth=('username', 'password'))
#超时
r=requests.get('http://www.baidu.com',timeout=0.1)
r=requests.get('http://www.baidu.com',timeout=(1,2))