我正在尝试解析一个html文件以获取3条信息(Country,long和lat)。我能找到正确的线,但分裂它是一种痛苦。如果信息没有改变或者仍然是一个世界,我可以做到,但事实并非如此。 这是我的代码
import urllib2
req = urllib2.Request('http://www.geoiptool.com/en/?IP=81.55.99.47')
response = urllib2.urlopen(req)
the_page = response.readlines()
这将返回html页面,我将用稍后的IP文件替换硬编码的“IP = 81.55.99.47”,因此国家/地区可能会更改
以下是我开始使用的代码,该代码有效,但如果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>
提前致谢
答案 0 :(得分:1)
这是一个解决方案:
>( *[^>]+ *)</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
此方法还会删除前导和尾随空格。
答案 1 :(得分:0)
您可以使用此正则表达式:
(?<=>)([\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语法并不完全熟悉,所以请原谅我,如果上面的代码不完全正确,但是你明白了..并且正则表达式的例子有效。