我尝试使用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的来源。它可以来自代理服务器吗?
答案 0 :(得分:1)
import requests
URL = 'https://www.blahblah.com'
proxy = {'http': 'http://www.blahblah.com'}
r = requests.get(URL, proxies = proxy)
print r.text