2013-05-25 2 views
0

То, что я пытаюсь сделать, это прочитать строку (IP-адрес), открыть веб-сайт с этим адресом, а затем повторить со всеми адресами в файле. вместо этого я получаю сообщение об ошибке. Я новичок в python, поэтому, возможно, это простая ошибка. Заранее спасибо !!!Использование нескольких прокси для открытия ссылки в urllib2

КОД:

>>> f = open("proxy.txt","r");   #file containing list of ip addresses 
>>> address = (f.readline()).strip();  # to remove \n at end of line 
>>> 
>>> while line: 
     proxy = urllib2.ProxyHandler({'http': address }) 
     opener = urllib2.build_opener(proxy) 
     urllib2.install_opener(opener) 
     urllib2.urlopen('http://www.google.com') 
     address = (f.readline()).strip(); 

ОШИБКА:

Traceback (most recent call last): 
    File "<pyshell#15>", line 5, in <module> 
    urllib2.urlopen('http://www.google.com') 
    File "D:\Programming\Python\lib\urllib2.py", line 126, in urlopen 
    return _opener.open(url, data, timeout) 
    File "D:\Programming\Python\lib\urllib2.py", line 394, in open 
    response = self._open(req, data) 
    File "D:\Programming\Python\lib\urllib2.py", line 412, in _open 
    '_open', req) 
    File "D:\Programming\Python\lib\urllib2.py", line 372, in _call_chain 
    result = func(*args) 
    File "D:\Programming\Python\lib\urllib2.py", line 1199, in http_open 
    return self.do_open(httplib.HTTPConnection, req) 
    File "D:\Programming\Python\lib\urllib2.py", line 1174, in do_open 
    raise URLError(err) 
URLError: <urlopen error [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond> 

ответ

1

Это означает, что прокси-сервер недоступен.

Вот проверки прокси-сервера, который проверяет несколько прокси одновременно:

#!/usr/bin/env python 
import fileinput # accept proxies from files or stdin 

try: 
    from gevent.pool import Pool # $ pip install gevent 
    import gevent.monkey; gevent.monkey.patch_all() # patch stdlib 
except ImportError: # fallback on using threads 
    from multiprocessing.dummy import Pool 

try: 
    from urllib2 import ProxyHandler, build_opener 
except ImportError: # Python 3 
    from urllib.request import ProxyHandler, build_opener 

def is_proxy_alive(proxy, timeout=5): 
    opener = build_opener(ProxyHandler({'http': proxy})) # test redir. and such 
    try: # send request, read response headers, close connection 
     opener.open("http://example.com", timeout=timeout).close() 
    except EnvironmentError: 
     return None 
    else: 
     return proxy 

candidate_proxies = (line.strip() for line in fileinput.input()) 
pool = Pool(20) # use 20 concurrent connections 
for proxy in pool.imap_unordered(is_proxy_alive, candidate_proxies): 
    if proxy is not None: 
     print(proxy) 

Использование:

$ python alive-proxies.py proxy.txt 
$ echo user:[email protected]:port | python alive-proxies.py 
Смежные вопросы