iT邦幫忙

1

爬蟲被登入小視窗擋 求解決方法

目前在用python學爬蟲, 其中一個題目是要爬這個網址
https://www.zhihu.com/explore
但用 requests.get() 都會跑出 400 Bad Request 的資料
像這樣

<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>openresty</center>
</body>
</html>

搜了網址發現一進去就會跳出要我們登入的彈出視窗, 因此猜測是因為這樣而出現錯誤
https://ithelp.ithome.com.tw/upload/images/20200303/20120959GYryhZGx1M.jpg
求解~/images/emoticon/emoticon56.gif

2 個回答

2
dragonH
iT邦超人 7 級 ‧ 2020-03-03 00:30:48
最佳解答

因此猜測是因為這樣而出現錯誤

逼逼 猜錯了

在 header 補上你的 user-agent

code

import requests
url = "https://www.zhihu.com/explore"
headers= {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36"
}
response = requests.get(url, headers=headers)
print(response.text)
看更多先前的回應...收起先前的回應...
小魚 iT邦大師 1 級 ‧ 2020-03-03 17:47:13 檢舉

簡單的說就是偽裝成瀏覽器,
不要讓它覺得你是爬蟲.

dragonH iT邦超人 7 級 ‧ 2020-03-03 17:51:53 檢舉

小魚

簡單的說就是偽裝成瀏覽器,
不要讓它覺得你是爬蟲.

沒喔

有的時候有些網站會用這個來決定網頁版本(電腦、行動版)

他這情況應該就是

小魚 iT邦大師 1 級 ‧ 2020-03-03 17:58:41 檢舉

喔喔, 是這樣喔, 就是只允許電腦讀取就是了.
不過現在不是都用RWD了嗎? ...

dragonH iT邦超人 7 級 ‧ 2020-03-03 18:26:14 檢舉

不一定餒

有的不喜歡 RWD

想把行動版做成一個 pwa app

1
I code so I am
iT邦研究生 5 級 ‧ 2020-03-04 08:34:10

碰到需要登入的網頁,通常你瀏覽到某些頁面,系統會幫你redirect到登入頁,用爬蟲抓,可能會得到 response code=302 的空頁,一個較簡單的解決方法是,自己主動爬到登入頁,驗證過,再爬你要的網頁。
這類的網頁使用 selenium ,模擬人的輸入,比較會成功。
程式碼可參考:
https://github.com/bnorquist/auto_login/blob/master/scripts/login.py#L7

我要發表回答

立即登入回答