2012-01-15 20 views
1

私は、Webサイトから情報を引っ張っています使用してのpython(この場合、IP /場所などで)3削除空白行は、Python

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() 
私は/空白行を削除するタプルに情報を入れての/ etc変数として保存することができますどのように

私は収集したデータの使用を開始できるようにしたい。

+1

があなたの代わりにPythonのAPIを使用して考えがありますか? 'http:// www.maxmind.com/app/python' – jordanm

+0

@jordanm haha​​、okだから私はそれを見たことがなかった...私は間違いなく見ています。ポストはまだ立っているが、一般的な質問として。 – beoliver

答えて

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

ありがとうございました...私は空の配列エントリを削除するためにdelを使うことができると思います(現時点ではPythonに潜んでいます)。しかし、実際の質問の1つは、なぜiso-8859-1を使用するのですか?デコード()だけでなく、 – beoliver

+0

@ user969617フィールド値で何をしたいですか?空のフィールドを削除すると、どのフィールドがどのフィールドであるかわからなくなります。 ['decode'](http://docs.python.org/py3k/library/stdtypes.html#bytes.decode)の質問:' encoding'引数のデフォルトは "utf-8"ですが、正しいエンコーディングウェブページの「iso-8859-1」です。 – ekhumoro

+0

空のフィールドを削除する必要はありません。私はちょうどそれが1、2、3、5、7、...の代わりに1、2、3、4 ...などと呼ぶことができるように、それがきれいになると感じました。少し。これは私がpythonでgoogleを使う方法を知らないためです。ある日、私は謙虚な始まりを振り返って笑うことができます。 – beoliver

3

あなたがhtml scaping/parsingなどを行っているなら、BeautifulSoupのようなライブラリを使用してください。

手作業での掻き取りを凌駕します。

+0

+1 BeautifulSoup。それがベストだ。 – Blender

関連する問題