2016-10-17 72 views
0

我想寫一個腳本,從源代碼中挑選一個特殊的點並返回它。 (打印)Python的HTML源代碼

import urllib.request       

Webseite = "http://myip.is/"      
html_code = urllib.request.urlopen(Webseite) 

print(html_code.read().decode('ISO-8859-1')) 

這是我當前的代碼。 我只想打印網站給出的IP地址。 這個我的輸入將在python中打印(title =「copy ip address」)。

+0

如果要解析HTML檢索任何類型的數據,然後使用BeautifulSoup圖書館 – mic4ael

+0

@ mic4ael的建議是肯定好!在這個簡單的特殊情況下,你可能已經在分配一次地址的時候接受了這個列表的元素1,並且最後一次分割出一個字符串''並且選擇元素0,它應該是IP ...更優雅的應該是美麗的湯... – Dilettant

+0

感謝mic4ael與BeautifulSoup尖端! – MAXLooW

回答

0
import requests 
from bs4 import BeautifulSoup 

s = requests.Session() 
r = s.get('http://myip.is/') 

soup = BeautifulSoup(r.text, "html5lib") 
myIP = mySoup.find('a', {'title': 'copy ip address'}).text 
print(myIP) 

它使用請求庫(你應該總是使用HTTP請求)拉將內容提供給BeautifulSoup,一個非常好的HTML解析器,並要求BeautifulSoup找到一個<a>標籤,將atrtibuet title設置爲'copy ip address',然後將該標籤的文本組件保存爲myIP

+0

完美! 這正是在尋找什麼即時通訊。 – MAXLooW

+0

你可能已經錯了。 – MAXLooW

+0

MYIP = mySoup.find #IS假 MYIP = soup.find#是對的 – MAXLooW

0

你可以使用jsonip它返回一個JSON對象,您可以輕鬆地分析使用標準Python庫

import json 
from urllib2 import urlopen 

my_ip = json.load(urlopen('http://jsonip.com'))['ip'] 
0

您可以使用正則表達式來查找IP地址:

import urllib.request 
import re 

Webseite = "http://myip.is/" 
html_code = urllib.request.urlopen(Webseite) 

content = html_code.read().decode('ISO-8859-1') 
ip_regex = r'(?:[0-9]{1,3}\.){3}[0-9]{1,3}' 

ips_found = re.findall(ip_regex, content) 
print(ips_found[0])