簡體   English   中英

Python:使用對重定向網頁的請求

[英]Python: Using requests for a webpage that redirects

更新:我確實在API中找到了我需要的信息,這並不是對這個特定問題的真正答案,而是我軟件的解決方案。

我正在嘗試登錄網頁,導航到另一個頁面並解析HTML表。

如果使用瀏覽器而不登錄就進入目標頁面,它將帶您到默認登錄頁面,並且無論如何都必須導航到目標頁面。 這就是為什么我有兩個URL調用的原因。

import requests

payload = {'username' : 'USER', 'password' : 'PASSWORD'}

with requests.Session() as s:
    p = s.post('login_url', data=payload)
    r = s.get('target_url')

當您導航到登錄頁面時,通常會先進入另一個頁面檢查瀏覽器,然后再進入登錄頁面本身。 我收到來自“ p”的回復:

<span data-translate="checking_browser">Checking your browser before accessing</span> website.</h1>
<p data-translate="process_is_automatic">This process is automatic. Your browser will redirect to your requested content shortly.</p>
<p data-translate="allow_5_secs">Please allow up to 5 seconds…</p>

...這只是告訴您等待重定向並登錄的頁面。是否有一種處理方法,以便它等待可以登錄的頁面? 我將需要大約每20分鍾在代碼中撥打一次電話,因此如果我可以保持登錄狀態並且僅進入目標頁面,那就更好了。

  • 理想的解決方案:在程序開始時登錄一次並保持登錄狀態。
  • 更好的解決方案:每次重新登錄,但避免五秒鍾的等待時間來更改頁面。
  • 可接受的解決方案:等待五秒鍾,然后重新登錄,然后每次登錄。

此“檢查瀏覽器”消息看起來像是CloudFlare功能,旨在阻止人們以這種方式訪問​​網站-您將需要從服務器運行一些javascript來克服這種障礙(這種想法是有人在訪問網站瀏覽器將自動運行javascript-如果他們使用漫游器抓取網站,它將失敗。

如果該站點具有API,那么切換到使用該接口將是我的第一個建議。

否則, 有一些軟件包可以幫助您解決此問題 ,但是由於壁壘明確地阻止了這種使用,因此當CloudFlare進行更改時,它們很可能會停止工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM