Python クローラー: 高度なリクエスト

Cookie の処理

一般的に言えば、対処しなければならない Cookie はログインする必要があります。プロセスは、クライアントがログインした後、サーバーから返された Cookie を取得し、その Cookie を使用して URL を要求し、関連するコンテンツを取得します。したがって、上記の 2 つの操作を接続する必要があり、セッションを使用して要求を行うことができます。セッションは一連のリクエストと見なすことができ、このプロセス中に Cookie が失われることはありません。

セッションを使用

import requests

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

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

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

クッキーを使用する

別の方法は、セッションを使用しない方法です。Web ページにログインした後、要求されたページの Cookie 値を開発者モードで取得し、それをヘッダーに追加して要求します。

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

アンチヒルを使用してアンチクライミングを処理する

アンチリーチ: 現在のリクエストの上位レベルであるトレーサビリティと見なすことができます。リファラー アンチリーチングは、HTTP 要求でリファラー ヘッダーを取得し、リファラーに従ってソースを追跡し、ソースを識別して判断することに基づいています。

例: ナシのビデオをつかむ

1. ソースコードを解析し、実行時に srcurl を見つけます. 実際には、この srcurl はビデオの実際のアドレスではありません
ここに画像の説明を挿入
.最後のアドレスの前半部分に 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)

プロキシ (非推奨)

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

おすすめ

転載: blog.csdn.net/Ohh24/article/details/127669968