Python爬虫:requests进阶

处理cookie

一般来说我们要处理的cookie都是需要登录操作的,过程是客户端登陆以后,获得服务器返回的cookie,然后带着cookie去请求url获得相关内容。因此需要将上述两个操作连起来,可以使用session进行请求。session可以认为是一连串的请求,并且在这个过程中cookie不会丢失。

使用session

import requests

# 会话
session = requests.session()
data = {
    
    
   #填网页抓取后需要登陆的登陆参数名,比如   
   #“loginname”:"password"
}

#登录
url = ""
session.post(url,data=data)

#上面的session中是有cookie的
resp = session.get("XXXXX") # XXXX表示存储数据的请求网页,需要在开发者模式下的network中寻找相关数据

使用cookie

另一种方式是不使用session,在网页登陆以后,在开发者模式下获取请求页面的cookie值,把它加入到headers中进行请求。

import requests
resp = requests.get("XXXX",headers={
  "Cookie":"XXXXXXXXX"
})

使用防盗链处理一些反爬

防盗链:可以认为是溯源,当前本次请求的上一级是谁。referer防盗链是基于获取HTTP请求中的 referer header,根据 referer 跟踪来源,对来源进行识别和判断。

实例:抓取梨视频

1.分析源代码,在运行时发现一个srcurl,事实上这个srcurl并不是视频真正的地址,所以我们需要进一步考虑
在这里插入图片描述
2.通关观察可以发现真实的url地址是将最后地址的前半部分去掉systemtime加上字符串“content”和打开视频的url最后部分
在这里插入图片描述
在这里插入图片描述
代码:

#1.拿到contID
#2.拿到videoStatus返回的json  -> srcURL
#3.srcUL中的内容进行修整
#4.下载视频
import requests

url = "https://www.pearvideo.com/video_1773900"
contID = url.split("_")[1]

videoStatusUrl = "https://www.pearvideo.com/videoStatus.jsp?contId=1773900&mrd=0.3066916683965706"
headers = {
    
    
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36",
    #防盗链
    "Referer": "https://www.pearvideo.com/video_1773900"
}

resp = requests.get(videoStatusUrl,headers=headers)
dic =resp.json()
srcUrl = dic['videoInfo']['videos']['srcUrl']
systemTime = dic['systemTime']
srcUrl = srcUrl.replace(systemTime,f"cont-{contID}")

#下载视频
with open("a.mp4",mode="wb") as f:
    f.write(requests.get(srcUrl).content)

proxy(不推荐使用)

proxies = {
   "https": "https://XXXXXX"
}
requests.get("XXXXXX",proxies=proxies)

猜你喜欢

转载自blog.csdn.net/Ohh24/article/details/127669968