0

私は 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 を使用しているため、動作させる必要があります。どんな考えでも大歓迎です。

4

0 に答える 0