- 相比url,url2库来说,Requests代码量少了很多,比较方便。
GET请求:
import requests
date = {'key':'value'}
r = requests.get(url,params=date) #params地内容一般是网址后面`?`后面地参数,比如搜索内容之类的~
得到一个Response对象,用r.content
得到二进制文件,r.text
得到文本文件,r.headers
得到响应头。
除此之外还有很多可选参数,比如timeout
设置超时;proxies
设置代理。
POST请求:
import requests
postdate = {'key':'value'}
r = requests.post(url,date = postdate)
爬取一般界面的框架:
#获取HTML信息
def GetHtml(url):
try:
kv = {'user-agent': 'Mozilla/5.0'}
r = requests.get(url, timeout=5, headers = kv)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text #看情况要返回什么。
except:
print('爬取失败')
Cookies
1.自定义Cookie值发送出去:
headers = dict(...)
cookies = dict(…)
r = requests.get(url, headers = headers, cookies = cookies)
2.自动处理Cookies的方式:Session
- 在登陆中用Session函数处理Cookie的方式很常用。
详解见:https://www.cnblogs.com/zhaof/p/7211253.html
认证的机制。每当我们使用一款浏览器访问一个登陆页面的时候,一旦我们通过了认证。服务器端就会发送一组随机唯一的字符串(假设是123abc)到浏览器端,这个被存储在浏览端的东西就叫cookie。而服务器端也会自己存储一下用户当前的状态,比如login=true,username=hahaha之类的用户信息。 - Cookies —— 用r.cookies() 可以获得cookies ,再把cookies 作为参数传入网站即可。但是面对较复杂的网站一般它都会调整cookies,可以用requests的session函数。cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是“谁”了。
- session = requests.Session() —— Session(会话)对象可以持续跟踪会话信息,像cookie,header甚至一些HTTP协议的信息,比如HTTPAdapter。
- Session的应用:
data = {'username':un,
'password':pw,
}
session = requests.Session()
#POST需要找到action触发的网页,而不是原来网页。
res = session.post(url+'/action.php?act=Login',data = data,headers = my_header)
#到此完成登陆,session保留cookies等信息。
res2 = session.get(url)
# 后面都用创建的会话来操作。