[英]Python requests.get showing 404 while url does exists
http://www.leboncoin.fr/montres_bijoux/671762293.htm
我正試圖打開這個網址
import requests
s = requests.Session()
s.headers['User-Agent'] = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/34.0.1847.116 Chrome/34.0.1847.116 Safari/537.36'
s.headers['Host'] = 'www.leboncoin.fr'
url = 'http://www.leboncoin.fr/montres_bijoux/671762293.htm'
r = s.get(url)
print r.text
當我運行此腳本時,它在我的終端中顯示此錯誤,
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /montres_bijoux/671762293.htm was not found on this server.</p>
</body></html>
雖然我可以在瀏覽器中打開相同的網址,但可以查看內容。
可能是什么問題??
甚至沒有等待你的測試,我很自信我知道你的bug是什么。
我把這個url手動放在函數調用中工作正常但是如果我讀取該文件並直接使用該url調用函數,請給我錯誤。 我在讀取文件時已經進行了3-4次檢查,即使我嘗試在被調用的函數內打印該url,我也在文件中完成了url。我也在函數中接收了該url。 仍然不知道發生了什么?
很可能你正在使用類似於for line in file:
或file.readline
或其他一些保留換行符的函數來讀取URL。 所以,你實際上最終得到的不是這個:
url = 'http://www.leboncoin.fr/montres_bijoux/671762293.htm'
… 但是這個:
url = 'http://www.leboncoin.fr/montres_bijoux/671762293.htm\n'
后者將被requests
轉義為對於不存在的資源而言非常好的URL,因此404錯誤。
檢查這個的最好方法是print repr(url)
而不是print(url)
。 這也將發現其他可能的問題,如嵌入式非打印字符。 它不會找到所有內容 ,例如看起來像的Unicode字符.
但實際上並非如此,但這是一個很好的第一次測試。 (如果沒有找到它,則進行第二次測試,將輸出,引號和所有內容復制並粘貼到測試腳本中。)
如果這是問題,修復很簡單:
url = url.rstrip()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.