2017-08-19 16 views
0

私はPython 2の非常に単純な関数をPython 3に変換しようとしていました。これはWebページをスクラップしてプロキシのリストを返すのでTwitterで使うことができますロボット:Proxy ScrapperをPython 2.xからPython 3.xに変換する

#!/usr/bin/env python 
#python25 on windows7 
##################################### 
# GPL v2 
# Author: Arjun Sreedharan 
# Email: [email protected] 
##################################### 

import urllib2 
import re 
import os 
import time 
import random 

def main(): 
    request = urllib2.Request("http://www.ip-adress.com/proxy_list/") 
    # request.add_header("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5") 
    #Without Referer header ip-adress.com gives 403 Forbidden 
    request.add_header("Referer","https://www.google.co.in/") 
    f = urllib2.urlopen(request) 

    #outfile = open('outfile.htm','w') 
    str1 = f.read() 
    #outfile.write(str1) 

    # normally DOT matches anycharacter EXCEPT newline. re.DOTALL makes dot 
    include newline 
    pattern = re.compile('.*<td>(.*)</td>.*<td>Elite</td>.*', re.DOTALL) 
    matched = re.search(pattern,str1) 
    print(matched.group(1)) 
    """ 
    ip = matched.group(1) 
    os.system('echo "http_proxy=http://'+ip+'" > ~/.wgetrc') 
    if random.randint(1,2)==1: 
     os.system('wget --proxy=on -t 1 --timeout=14 --header="User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5" http://funnytweets.in -O /dev/null') 
    else: 
     os.system('wget --proxy=on -t 1 --timeout=14 --header="User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13" http://funnytweets.in -O /dev/null') 
    """ 
if __name__ == '__main__': 
    while True: 
     main() 
     time.sleep(2) 

[OK]を、私はすでにurllib2のはP3にdiferentであることを知っているが、私は、それは誰でも助けることができます:(動作させることができませんでした:)おかげで?!

+0

GitHubのオリジナルスレッドhttps://github.com/arjun024/get-a-random-proxy-address/blob/master/src/getProxyAddress.py –

答えて

2

Python3 Requestおよびurlopenurllib.requestモジュールにあります。したがって、それに応じてインポートを変更する必要があります。

from urllib.request import Request, urlopen 

urllib2からインポート時にImportError例外をキャッチしている場合は、あなたのコードPython2とのpython3互換性を持たせることができます。

try : 
    from urllib2 import Request, urlopen 
except ImportError: 
    from urllib.request import Request, urlopen 

また、あなたがそれらを必要とする場合URLErrorHTTPErrorは、urllib.errorに位置していることに注意してください。