【发布时间】:2015-01-05 10:44:40
【问题描述】:
我想提取包含IP blocks from this site 的表。
查看HTML源代码我可以清楚地看到我想要的区域是这样的结构:
[CONTENT BEFORE TABLE]
<table border="1" cellpadding="6" bordercolor="#000000">
[IP ADDRESSES AND OTHER INFO]
</table>
[CONTENT AFTER TABLE]
所以我写了这个小sn-p:
import urllib2,re
from lxml import html
response = urllib2.urlopen('http://www.nirsoft.net/countryip/za.html')
content = response.read()
print re.match(r"(.*)<table border=\"1\" cellpadding=\"6\" bordercolor=\"#000000\">(.*)</table>(.*)",content)
页面的内容被提取(并且正确)没有问题。然而,正则表达式匹配总是返回None(此处的打印仅用于调试)。
考虑到页面的结构,我不明白为什么没有匹配。我希望会有三组,第二组是表格内容。
【问题讨论】:
-
请使用 HTML 解析器
-
@sshashank124 在这种情况下不是一个选项。
-
您的任务是否特别要求您使用正则表达式?
-
@sshashank124 是的,我需要演示正则表达式来提取表格,但当我可以让正则表达式处理其他字符串时,我无法弄清楚为什么它不适用于这个大字符串。
标签: python html regex web-scraping html-table