2012-01-15 90 views
1

我從網站中提取信息(在這種情況下,IP /位置等)使用python 3刪除空行蟒蛇

import urllib.request 

data = urllib.request.urlopen('http://www.maxmind.com/app/locate_my_ip') 
for search in data: 
    if b'align="center">' in search: 
     print(next(data).decode().rstrip()) 
data.close() 

如何刪除空行/將信息放入元組/另存爲變量等我希望能夠開始使用收集的數據。

+1

你有使用Python API,而不是考慮? 'http:// www.maxmind.com/app/python' – jordanm 2012-01-15 21:26:11

+0

@jordanm哈哈,好吧,我沒有看到...我一定會看看。作爲一個普遍的問題,儘管這個帖子依然存在 – beoliver 2012-01-15 21:33:57

回答

2

正如@jordanm所說,最好的選擇是使用GeoIP Python API

但要回答你的問題 - 你的代碼也許應該看起來更像是這樣的:

import urllib.request, pprint 

data = urllib.request.urlopen('http://www.maxmind.com/app/locate_my_ip') 

fields = [] 
for line in data: 
    if b'class=output' in line: 
     fields.append(next(data).decode('iso-8859-1').strip()) 
data.close() 

請注意,我已經改變了測試線和空白行已被列入。這是爲了確保這些字段可以通過索引輕鬆識別。

要訪問的字段值,你可以這樣做:

address = fields[0] 
isp = fields[8] 
domain = fields[-1] 

如果你想刪除特定字段:

del fields[3], fields[4], fields[6] 
+0

謝謝......我認爲(閱讀潛入python的那一刻),然後我可以使用del刪除空的數組條目?一個真正的問題,爲什麼你使用'iso-8859-1'?不只是解碼() – beoliver 2012-01-16 00:07:12

+0

@ user969617。你想用字段值做什麼?如果你刪除空的字段,你將不知道哪個字段是哪個字段。關於['decode']的問題(http://docs.python.org/py3k/library/stdtypes.html#bytes.decode):'encoding'參數默認爲「utf-8」,但是正確的編碼對於網頁是「iso-8859-1」。 – ekhumoro 2012-01-16 00:17:56

+0

我沒有真正需要刪除空白字段。我只是覺得它會更乾淨,因爲我可以將它們稱爲1,2,3,4,...等等,而不是1,2,3,5,7,...以及試圖使用python的藉口一點點。所有這一切的原因是因爲我不知道如何使用谷歌定位與Python。有一天,我希望能夠回頭看看並開始笑起來。 – beoliver 2012-01-16 00:30:19

3

如果你正在做HTML的解析/分析等,使用庫如BeautifulSoup

它肯定會跳動手動處理刮。

+0

用於BeautifulSoup。這是最好的。 – Blender 2012-01-15 21:23:48