为什么python请求会出现404错误?

时间:2015-10-26 16:34:16

标签: python http-status-code-404 python-requests

我尝试使用requests库来获取网址中的内容。更多细节,我通过以下方式实现:

import requests

proxies = {'http':'my_proxy.blabla.com/'}
r = requests.get(url, proxies = proxies)
print r.text

结果我得到以下内容:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
  <title>404 - Not Found</title>
 </head>
 <body>
  <h1>404 - Not Found</h1>
 </body>
</html>

所以,看起来代理让我走了,我到达了服务器。但是,Web服务器无法解释我的请求(错误的路径左右),并且不知道要返回的内容。我能正确理解吗?

可能是什么原因?如果我把URL放在我的一个浏览器中,我确实得到了预期的内容。

ADDED

评论中已经建议问题的根源在标题中。因此,我使用此网站:http://www.procato.com/my+headers/来查找我的浏览器发送的标头。我使用这些值来设置headers函数的requests.get变量。我为以下键设置了值:'User-Agent','Accept','Referer','Accept-Encoding','Accept-Language','X-Forwarded-For','Cache-Control','连接'。不幸的是,它无法解决问题。我仍然得到相同的404响应。

已添加2

我已经测试了我的功能,以便拖拽不同的网址并获得完全相同的响应。所以,我之前的假设是响应(我看到的XML)来自Web服务器可能是错误的。两个完全不同的网络服务器(其中一个是Google)不太可能产生相同的响应。

所以,现在我不明白XML的来源。它可以来自代理服务器吗?

1 个答案:

答案 0 :(得分:1)

import requests
URL = 'https://www.blahblah.com'
proxy = {'http': 'http://www.blahblah.com'}
r = requests.get(URL, proxies = proxy)
print r.text