requests的简单使用
1.最基本的GET请求可以直接用get方法
response = requests.get(url)
- response的常用方法:
response.text 返回解码后的字符串
respones.content 以字节形式(二进制)返回。
response.status_code 响应状态码
response.request.headers 请求的请求头
response.headers 响应头
response.encoding = 'utf-8' 可以设置编码类型
response.url 查看完整的url地址
response.encoding 获取当前的编码
response.json() 内置的JSON解码器,以json形式返回,前提返回的内容确保是json格式的,不然解析出错会抛异常
2.添加headsers和查询参数
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"
}
# params 接收一个字典或者字符串的查询参数,
# 字典类型自动转换为url编码,不需要urlencode()
response = requests.get(
"http://www.baidu.com/s?",
params = kw,
headers = headers
)
print(response.text)
基本POST请求(data参数)
1.最基本post方法
response = requests.post(url=url, data = data)
url:post请求的目标url
data:post请求的表单数据
设置代理(proxies参数)
如果需要使用代理,你可以通过为任意请求方法提供 proxies 参数来配置单个请求:
import requests
# 根据协议类型,选择不同的代理
proxies = {
"http": "http://12.34.56.79:9527",
"https": "http://12.34.56.79:9527",
}
response = requests.get(
"http://www.baidu.com",
proxies = proxies
)
print(response.text)
Cookies
import requests
response = requests.get("https://www.douban.com/")
# 7\. 返回CookieJar对象:
cookiejar = response.cookies
# 8\. 将CookieJar转为字典:
cookiedict = requests.utils.dict_from_cookiejar(
cookiejar
)
print (cookiejar)
print (cookiedict)
然后可以使用cookidict继续发起请求,登录成功后访问个人主页,能够成功获取到个人主页信息,说明确实保存了cookie
session
在 requests 里,session对象是一个非常常用的对象,这个对象代表一次用户会话:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开。
会话能让我们在跨请求时候保持某些参数,比如在同一个 Session 实例发出的所有请求之间保持 cookie 。
#requests.session(): 维持会话,可以让我们在跨请求时,保存某些参数
import requests
#实例化session
session = requests.session()
#目标url
url = 'https://www.douban.com/accounts/login'
form_data = {
'source': 'index_nav',
'form_email': '18518753265',
'form_password': 'ljh12345678',
'captcha-solution': 'purpose',
'captcha-id': 'TaXhQ6a7ylku0Ylt4WfRbDPe:en'
}
#设置请求头
req_header = {
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
}
#使用session发起请求
response = session.post(url,data=form_data,headers= req_header)
if response.status_code == 200:
#访问个人主页
url = 'https://www.douban.com/people/175417123/'
response = session.get(url,headers=req_header)
if response.status_code == 200:
with open('douban3.html','w',encoding='utf-8') as file:
file.write(response.text)