【发布时间】:2013-08-22 00:04:10
【问题描述】:
正如标题中所说,我试图通过几个不同的代理顺序访问一个 url(使用 for 循环)。现在这是我的代码:
import requests
import json
with open('proxies.txt') as proxies:
for line in proxies:
proxy=json.loads(line)
with open('urls.txt') as urls:
for line in urls:
url=line.rstrip()
data=requests.get(url, proxies={'http':line})
data1=data.text
print data1
还有我的 urls.txt 文件:
http://api.exip.org/?call=ip
还有我的 proxies.txt 文件:
{"https": "84.22.41.1:3128"}
{"http":"194.126.181.47:81"}
{"http":"218.108.170.170:82"}
我在 [www.hidemyass.com][1] 获得的
由于某种原因,输出是
68.6.34.253
68.6.34.253
68.6.34.253
好像它是通过我自己的路由器 IP 地址访问该网站一样。换句话说,它不是试图通过我给它的代理来访问,它只是循环并一遍又一遍地使用我自己的。我做错了什么?
【问题讨论】:
-
正如我在您之前的一个问题中所建议的那样,如果您打印出您正在传递的一些中间值,或者在调试器中运行,您会发现更容易理解正在发生的事情或交互式可视化器或其他查看它们的方式。如果你打印出每个
{'http': line},那么问题就很明显了。 -
为什么要打印出每个 {'http':line}?那不只是多次打印网址吗?我不应该把网页上的html打印出来,这样我就可以验证它是代理服务器的ip地址吗?
-
如果你不知道它会打印出什么,你就会知道发生了什么。如果你认为你知道它会打印出什么,你就会知道你是否正确。这是最基本的调试。显然,您的脚本中的某些内容没有达到您的预期。第一步是找出哪里出了问题,而这样做的唯一方法是查看这些值,看看它们是否错了。
标签: python httprequest python-requests