爬虫学习 requests进阶(四)

进阶概述

我们在之前的爬虫中其实已经使用过headers.header为HTTP协议中的请求头.一般存放一些和请求内容无关的数据.有时也会存放一些安全验证信息.比如常见的User-Agent, token,cookie等.

通过requests发送的请求,我们可以把请求头信息放在headers中.也可以单独进行存放,最终由requests自动帮我们拼接成完整的http请求头.
本章内容:

  1. 模拟浏览器登录->处理cookie
  2. 防盗链处理->抓取li视频数据
    a->b
  3. 代理->防止被封IP
  4. 接入第三方代理

处理cookie

# 登陆 ->cookie
#cookie 去请求url -> 内容

#使用session 进行请求 -> 一连串的请求
#session 会话
import requests
session = requests.session()
data ={
    "loginname":"",
    "password":""
}

#login
url= ""
resp = session.post(url,data=data)

#print(resp.cookies) 看cookie
#书架数据 url
session.get('')#放url
#print(resp.json())

''''
resp =erquests.get("",headers={
    "cookie":""
})
'''

防盗链

源代码没有video标签
元素中是第二次请求 | js生成的

import requests
#1。拿到contId
#2。拿到videoStatus返回的json.  ->  srcURL
#3. srcURL里面的内容进行修整
#4,下载视频

url = "https://www.pearvideo.com/video_1787592"
contId = url.split("_")[1]#切割上面的url 拿到1787592
 
videoStatus = f"https://www.pearvideo.com/videoStatus.jsp?contId={contId}&mrd=0.17068459506292188"
headers = {
    "User-Agent": "Mozilla/5.0 .........",
    #防盗链:溯源请求的上一级
    "Referer" : url
    }
resp = requests.get(videoStatus,headers=headers)
dic=resp.json()

srcUrl = dic['videoInfo']['videos']['srcUrl']#preview
systemTime = dic['systemTime']

srcUrl = srcUrl.replace(systemTime,f"cont-{contId}")#f{}

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

代理

以防封锁IP

import requests
proxy1={
	"http": "http://xx.xx.xx.xx:xx",
	"https": "https://xx.xx.xx.xx:xx",
}
resp = requests.get(url,proxies = proxy1)
resp.encoding='utf-8'
print(resp.text)

代理弊端:

  • IP不好找

第三方代理接入

开放代理API链接

你可能感兴趣的:(python爬虫,学习,python,爬虫)