私は python が初めてで、scholate.py と TOR を使用して Google Scholarスクレーパーを構築しようとしています。残念ながら、以下のコードを実行すると:
import scholar
import csv
import socks
import socket
import urllib2
import urllib
import httplib
from TorCtl import TorCtl
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050, True)
socket.socket = socks.socksocket
proxy_support = urllib2.ProxyHandler({"http" : "127.0.0.1.8118"})
opener = urllib2.build_opener(proxy_support)
def connectTor():
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050, True)
socket.socket = socks.socksocket
print "Connected to Tor"
def newId():
socks.setdefaultproxy()
conn = TorCtl.connect(controlAddr="127.0.0.1", controlPort=9051, passphrase="123")
TorCtl.Connection.send_signal(conn, "NEWNYM")
conn.close()
connectTor()
connectTor()
for i in range(0, 10):
print "case "+str(i+1)
newId()
conn = httplib.HTTPConnection("my-ip.heroku.com")
conn.request("GET", "/")
response = conn.getresponse()
print(response.read())
すべて問題なく、IP アドレスが返されます。ただし、ドロップした場合:
conn = httplib.HTTPConnection("my-ip.heroku.com")
conn.request("GET", "/")
response = conn.getresponse()
print(response.read())
そしてそれを
urllib2.install_opener(opener)
print(urllib2.urlopen("http://my-ip.heroku.com/").read())
「URLError urlopen error [Errno 11004] getaddrinfo failed.」というエラー メッセージが表示されます。
Scholar.py は urllib2 を使用しているため、動作させる必要があります。どんな考えでも大歓迎です。