我在Python2.7中使用Requests API。
我正在尝试通过代理服务器下载某些网页。我有一个可用的代理服务器列表。但并非所有代理服务器都能按预期工作。一些代理需要身份验证,其他代理重定向到广告页面等。为了检测/验证不正确的响应,我在我的url请求代码中包含了两个检查。它看起来与此类似
import requests
proxy = '37.228.111.137:80'
url = 'http://www.google.ca/'
response = requests.get(url, proxies = {'http' : 'http://%s' % proxy})
if response.url != url or response.status_code != 200:
print 'incorrect response'
else:
print 'response correct'
print response.text
有些代理服务器的requests.get调用成功,它们通过了这两个条件,并且在response.text属性中仍然包含无效的html源代码。但是,如果我在FireFox浏览器中使用相同的代理并尝试打开同一个网页,我会显示一个无效的网页,但我的python脚本说响应应该是有效的。
有人能指出我缺少哪些其他必要的检查来清除错误的html结果?
或
如何成功验证我打算收到的网页是否正确?
问候。
答案 0 :(得分:0)
什么是"无效网页"当您的浏览器显示?服务器可以返回HTTP状态代码200,但内容是错误消息。您理解它是一条错误消息,因为您可以理解它,浏览器或代码不能理解它。
如果您对目标页面的内容有任何了解,可以检查返回的HTML是否包含该内容并在此基础上接受。