2015-02-05 2 views
0

im используя Python3.4, и я хочу использовать этот скрипт. Однако его создание для более ранней версии Python не работает. Я надеялся, что кто-то может помочь мне изменить его на код python 3. Ive пытался импортировать urllib.request как urllib2 (потому что, по-видимому urllib2 слито для питона 3)Ошибка Urllib от python 2 до python 3

import re 
import sys 
import urllib.request as urllib2 
from bs4 import BeautifulSoup 

usage = "Run the script: ./geolocate.py IPAddress" 

if len(sys.argv)!=2: 
    print(usage) 
    sys.exit(0) 

if len(sys.argv) > 1: 
    ipaddr = sys.argv[1] 

geody = "http://www.geody.com/geoip.php?ip=" + ipaddr 
html_page = urllib2.urlopen(geody).read() 
soup = BeautifulSoup.BeautifulSoup(html_page) 

# Filter paragraph containing geolocation info. 
paragraph = soup('p')[3] 

# Remove html tags using regex. 
geo_txt = re.sub(r'<.*?>', '', str(paragraph)) 
print geo_txt[32:].strip() 
+2

"не работает" означает, что именно? Вы получили сообщение об ошибке? Который? –

+1

И вы хотите заменить 'BeautifulSoup.BeautifulSoup (html_page)' только с помощью 'BeautifulSoup (html_page)' –

+0

И вместо того, чтобы использовать регулярное выражение для «разметки тегов», просто используйте 'paragraph.get_text()' .. –

ответ

1
print geo_txt[32:].strip() 

является Python 2. Для Python 3 использования

print(geo_txt[32:].strip())