Я пытаюсь разобрать html файл на 3 части информации (Страна, длинный и лат). Я могу найти правильную линию, но ее расщепление - это боль. Я могу сделать это, если информация не изменится или останется одним миром, но это не так. Вот мой код
import urllib2
req = urllib2.Request('http://www.geoiptool.com/en/?IP=81.55.99.47')
response = urllib2.urlopen(req)
the_page = response.readlines()
Это возвращает html-страницу, я буду заменять hardcoded 'IP = 81.55.99.47' файлом IP позже, поэтому страна может изменить
Вот код, с которого я начал работать, но он не работает, если IP, скажем, на основе Соединенных Штатов.
country = the_page[173]
lineof_country=country.split()
result=lineof_country[5]
con=result.split('<')
print con[0]
Вот пример строки 173, которая не будет работать:
<td align="left" class="arial_bold"><a href="http://en.wikipedia.org/wiki/united states" target="_blank"> United States</a> <img src='/flags/us.gif' alt="united states" align="absmiddle" ></td>
заранее спасибо
Здесь одно решение:
>( *[^>]+ *)</a>
Полные команды:
>>> import re
>>> x = re.search('> *([^>]+) *</a>', country)
>>> print x.group(1)
France
Второй пример:
>>> country2 = '<td align="left" class="arial_bold"><a href="http://en.wikipedia.org/wiki/united states" target="_blank"> United States</a> <img src="/flags/us.gif" alt="united states" align="absmiddle" ></td>'
>>> import re
>>> x = re.search('> *([^>]+) *</a>', country2)
>>> print x.group(1)
United States
Этот подход также удаляет ведущие и конечные пробелы.
Вы можете использовать это регулярное выражение:
(?<=>)([\w ]+)(?=</a>)
Пример рабочего регулярного выражения:
Python:
import re
str='<td align="left" class="arial_bold"><a href="http://en.wikipedia.org/wiki/united states" target="_blank"> United States</a> <img src='/flags/us.gif' alt="united states" align="absmiddle" ></td>'
str=re.match("(?<=>)([\w ]+)(?=</a>)",str)
print str.group()
Вывод:
United States
Примечание. Я не полностью знаком с синтаксисом python, поэтому, пожалуйста, простите меня, если приведенный выше код не совсем корректен, но вы получите эту идею. И пример регулярного выражения работает.
str.group(0)
или, может быть, str.group(1)
. Извините, я не знаком с Python, но один из них должен это сделать.
Python-2
к вопросу, уже помеченномуPython
и вопрос, который нигде не упоминаетPython-2
несколько сомнителен. Помните, что модераторы могут видеть все ваши изменения.