use*_*188 4 python session python-2.7 python-requests
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
Run Code Online (Sandbox Code Playgroud)
当我运行此脚本时,它在我的终端中显示此错误,
<!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>
Run Code Online (Sandbox Code Playgroud)
虽然我可以在浏览器中打开相同的网址,但可以查看内容.
可能是什么问题??
甚至没有等待你的测试,我很自信我知道你的bug是什么.
我把这个url手动放在函数调用中工作正常,但是如果我读取该文件并直接使用该url调用函数,请给我错误.我在读取文件时已经进行了3-4次检查,即使我尝试在被调用的函数内打印该url,我也在文件中完成了url.我也在函数中接收了该url.仍然不知道发生了什么?
最有可能你正在阅读的东西,如网址for line in file:或file.readline或保留换行符一些其他的功能.所以,你实际上最终得到的不是这个:
url = 'http://www.leboncoin.fr/montres_bijoux/671762293.htm'
Run Code Online (Sandbox Code Playgroud)
… 但是这个:
url = 'http://www.leboncoin.fr/montres_bijoux/671762293.htm\n'
Run Code Online (Sandbox Code Playgroud)
后者将被转义requests为对于不存在的资源而言非常好的URL,因此404错误.
检查这个的最好方法是print repr(url)代替print(url).这也将发现其他可能的问题,如嵌入式非打印字符.它不会找到所有内容,比如看起来像.但实际上没有的Unicode字符,但这是一个很好的第一次测试.(如果没有找到它,则进行第二次测试,将输出,引号和所有内容复制并粘贴到测试脚本中.)
如果这是问题,修复很简单:
url = url.rstrip()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9547 次 |
| 最近记录: |