簡體   English   中英

當url存在時,Python requests.get顯示404

[英]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.

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