簡體   English   中英

如果在本地和雲上運行,`requests` 會為同一腳本返回不同的結果

[英]`requests` returning different results for the same script if run both locally and on the cloud

我正在嘗試向鏈接發送請求並在 Python 腳本中獲取其 HTML 內容。 我正在使用requests庫。 該腳本在本地運行良好,並獲得 HTML 內容。

這個腳本只是一個測試,以確保在我使用另一個腳本抓取相同的鏈接之前一切正常。 這個爬蟲會運行 2-3 天,所以我顯然想在雲上運行它。

因此,當我在 Google Cloud Platform 的 VM 實例上使用該測試腳本時,它正在獲取網站的一個特殊頁面的內容,該頁面用於被列入黑名單的 IP。 所以這意味着GCP的服務器被網站列入黑名單。 如果我以前從未使用 GCP 進行 web 抓取,如何將其列入黑名單?

我怎樣才能確保一切都按預期工作? 這是我的代碼,用於檢查 HTML 內容是針對正確頁面還是不正確頁面(黑名單頁面的正文中包含“工程師”一詞,因此我正在搜索該詞以識別頁面類型):

import requests

base = 'https://www.autotrader.com/car-values/'

headers = {}  ## my headers go here. Without them, even locally, the script won't work

r = requests.get(base, headers=headers)
HTML = str(r.content)

if 'engineers' in HTML:
    print('You landed on blacklisted page')
else:
    print('Successful')

我還在 Streamlit Cloud 上部署了相同的腳本,但它在那里也不起作用。 所以我猜這是網站拒絕所有雲服務器的某種保護。

請幫我...

有2個原因

  • 要么網站已經將所有雲提供商的所有公共 IP 范圍列入黑名單
  • 或者您使用的 IP 已經被其他雲客戶用於網絡抓取,並且已被列入黑名單。

暫無
暫無

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

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