/ / Proxy Scrapper from Python 2.xからPython 3.xへの変換 - python、python-3.x、http-proxy

Proxy Scrapper from Python 2.xからPython 3.xへの変換 - python、python-3.x、http-proxy

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

#!/usr/bin/env python
#python25 on windows7
#####################################
# GPL v2
# Author: Arjun Sreedharan
# Email: arjun024@gmail.com
#####################################

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)

うーん、私はすでにurllib2がP3上で異なっていることを知っていますが、私はそれを動作させることができませんでした。(誰でも手伝うことができますか?:)ありがとう!

回答:

回答№1は2

Python3で Request そして urlopen は、 urllib.request モジュールでは、それに応じてインポートを変更する必要があります。

from urllib.request import Request, urlopen

Python2とPython3を互換性のあるものにすることができます ImportError インポート時の例外 urllib2.

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

また、 URLError そして HTTPError に位置しています urllib.errorあなたがそれらを必要とするならば。