2012-01-15 5 views
1

Я потянув информацию с веб-сайта (в данном случае 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() 

Как удалить пустые строки/поместить информацию в кортежах/сохранить как переменные и т.д. Я хочу, чтобы начать использовать собранные данные.

+1

Рассматривали ли вы с помощью Python API вместо этого? 'http: // www.maxmind.com/app/python' – jordanm

+0

@jordanm haha, хорошо, поэтому я этого не видел ... Я обязательно посмотрю. Как общий вопрос, хотя пост все еще стоит. – 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

Спасибо ... Я предполагаю (чтение дайвера в python в данный момент), что я могу использовать del для удаления пустых записей массива? Один реальный вопрос, почему, почему вы используете «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, 4 ... и т. Д. Вместо 1, 2, 3, 5, 7, ... и повод попробовать и использовать python немного. Причина всего этого в том, что я понятия не имею, как использовать google locate с python. Однажды я, надеюсь, смогу оглянуться и посмеяться над скромными начинаниями. – beoliver

3

Если вы используете html scaping/parsing и т. Д., Используйте библиотеку, например BeautifulSoup.

Он уверен, что удаляет ручную очистку.

+0

+1 для BeautifulSoup. Это лучшее. – Blender

Смежные вопросы