私はPythonにかなり慣れていません。私が取り組んでいるプロジェクト用の非常に単純な Web スクレイパーを作成しようとしています。その過程で、スクレイピングしているサービスから切断されないように、Tor を使用して IP アドレスを変更しようとしています。プロジェクトに追加する前に、新しい IP の取得に固有のコードをテストしようとしていました。これが私がテストしているコードです。
from TorCtl import TorCtl
import urllib2
for i in range(1,51):
proxy_support = urllib2.ProxyHandler({"http" : "127.0.0.1:8118"} )
opener = urllib2.build_opener(proxy_support)
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
urllib2.install_opener(opener)
print "IP " + str(i) + ":"
print urllib2.urlopen('http://ifconfig.me/ip').read()
conn = TorCtl.connect(controlAddr="127.0.0.1", controlPort=9051, passphrase="torPass")
conn.sendAndRecv('signal newnymrn')
conn.close()
これを行うと、次のエラーが表示されます。
IP 1: トレースバック (最新の呼び出しが最後): ファイル "scrapingTools.py"、86 行目、main() ファイル "scrapingTools.py"、76 行目、メイン print urllib2.urlopen('http://ifconfig.me /ip').read() ファイル "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py"、126 行目、urlopen で _opener.open(url, data, timeout) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 394, in open response = self._open(req, data) File "/System/ Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py"、412 行目、_open '_open'、req) ファイル"/System/Library/Frameworks/Python.framework/Versions/2.7 /lib/python2.7/urllib2.py」、372行目、in _call_chain result = func(*args) ファイル "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py"、1199 行目、http_open で self.do_open(httplib.HTTPConnection を返す) 、req) ファイル "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py"、1174 行目、do_open で URLError(err) urllib2.URLError を発生させます。
ここで何が起こっているのかを理解する助けがあれば大歓迎です。