1. aiohttp的使用(关于同步的requests.get和requests.post的异步应用)
在python的HTTP库中,有requests、aiohttp和httpx。
requests只能发送同步请求,aiohttp只能发送异步请求,httpx既能发送同步请求,也能发送异步请求。但是aiohttp请求的效率是最高的.
aiohttp核心是异步并发,基于asyncio/await,可实现单线程并发IO操作。
我们要想使用aiohttp首先是去安装它
pip install aiohttp
其次通过aiohttp.ClientSession()来代替requests
async with aiohttp.ClientSession() as session: # requests
async with session.get(url) as resp: # resp = requests.get()
执行完上述操作后即可获得所请求的url的内容
使用异步操作时,需要注意的是与同步操作的细微差异
- 1.异步的await resp.content.read() <==>同步的resp.content()
- 2.异步的需要await挂起, resp.text() <==>同步的resp.text
注意:在执行异步操作的列表执行时需要用到await asyncio.wait(列表名称)
aiohttp的主要特点如下:
- 支持客户端和HTTP服务器。
- 无需使用Callback Hell即可支持Server WebSockets和Client WebSockets。
- Web服务器具有中间件,信号和可插拔路由。
2. 模拟用户登录处理处理cookie
Cookie 是一个记录了用户登录状态以及用户属性的加密字符串。当你第一次登陆网站时,服务端会在返回的 Response Headers 中添加 Cookie, 浏览器接收到响应信息后,会将 Cookie 保存至浏览器本地存储中,当你再次向该网站发送请求时,请求头中就会携带 Cookie,这样服务器通过读取 Cookie 就能识别登陆用户了。
- 1.首先进行登录获取cookie值
session = requests.session()
data = {
"loginName": "",
"password": ""
}
登录
url = ""
resp = session.post(url, data=data)
# # print(resp.text)
# # print(resp.cookies) # 查看cookie
- 2.通过cookie去找我们需要的东西
result = session.get('')
# print(resp.json())
3. 防盗链的使用
# 防盗链: 溯源, 当前本次请求的上一级是谁,一种反爬机制
防盗链主要是针对客户端请求过程中所携带的一些关键信息来验证请求的合法性,而防盗链又有很多种,比如Referer防盗链、时间戳防盗链等等,这里只讲Referer防盗链。Referer用于告知服务器该请求是从哪个页面链接过来的。 我们需要注意查看Requests Headers当中的内容,如果遭遇反扒,可处理此项内容
"Referer": ""