Last Updated on 2021-09-05 by Clay
今天當我在使用 Python 中相當有名的 requests
套件爬蟲的時候,本來前一天可以正常執行、下載網頁檔案的程式,突然間出了以下報錯訊息:
requests.exceptions.TooManyRedirects: Exceeded 30 redirects.
這是因為,我們對其發出要求的網站意圖將我們重定向(Redirect)到另外一個網址,而 requests
套件又自動處理了重定向的問題,故導致重定向次數過多而產生報錯。
解決方法
關於重定向的問題,可以從回傳的狀態碼(status code)看出端倪。需要將 requests 的請求加上 allow_redirects=False
參數,否則程式在發送請求那裡便會報錯。
r = requests.get(url, cookies=cookies, allow_redirects=False) print(r.status_code)
Output:
303
而關於重定向的報錯經常會看見以下幾種:
- 301: 永久性轉移
- 302: 暫時性轉移
- 303: ??? (我有點不太確定該怎麼描述,總之我每次碰到 303 都是 cookies 過期)
所以,解決方法就是:檢查網址、檢查 cookies。
References
- https://stackoverflow.com/questions/23651947/python-requests-requests-exceptions-toomanyredirects-exceeded-30-redirects
- https://stackoverflow.com/questions/23651947/python-requests-requests-exceptions-toomanyredirects-exceeded-30-redirects