与RegEx模式明显不一致 - Python 3

时间:2016-03-27 19:54:07

标签: python html regex

我正在尝试使用Python 3中的re模块从HTML文档中提取一些数据。 我下载了此网址的源HTML:http://diablo2.diablowiki.net/Rune_list并将文件重命名为div

我想要的是id="mw-content-text"import re file=open('rune_list.html','r') data=file.read() file.close() pat=re.compile(r'<div id="mw-content-text"[\s\S]*</div>') found=re.search(pat,data) , 所以我写了这段代码:

</div>

而且......没有找到。我知道也许正则表达式不是那么好,因为据我所知,*的存在可能包括其他div,使得匹配的字符串成为<div id="mw- s的一大块。

但为什么它找不到任何东西? 我尝试了一个与我写的文件相同的模式,一个长字符串 以“</div> ...”开头并以“mw-content-text”结尾,其中包含一些随机表格,以模仿我想要查找的内容:在这种情况下,找到匹配的字符串。正则表达式虽然写得不好,但也应该对原作有效。我知道这些行存在于文档中。

所以我尝试在原始文档上进行更简单的搜索:首先我搜索"mw-content-text",没有双引号,并找到匹配的字符串。 然后我尝试<div id="mw-,双引号,没有找到任何东西。它没有找到更大的模式,因为它找不到这个。

令人困惑的是,如果我在源页面中手动搜索BeautifulSoup ...(通过浏览器上的“查看页面源”打开),元素就在那里。除此之外,我已经用正则表达式进行了一些搜索在具有类似代码的其他HTML文档上,它可以工作(有点)。我知道(并且使用了一些)这个问题的其他解决方案(例如print),但我想尝试使用正则表达式作为练习。

我错过了什么?

0 个答案:

没有答案