我正在开发一个项目,需要我编写一些代码来从python中的html文件中提取一些文本。
<tr>
<td>Target binary file name:</td>
<td class="right">Doc1.docx</td>
</tr>
^我感兴趣的html文件的一小部分。
#! /usr/bin/python
import os
import re
if __name__ == '__main__':
f = open('./results/sample_result.html')
soup = f.read()
p = re.compile("binary")
for line in soup:
m = p.search(line)
if m:
print "finally"
break
^我编写的示例代码用于测试是否可以提取数据。 我写了几个与此类似的程序,从txt文件中提取文本几乎完全一样,并且它们运行得很好。关于正则表达式和HTML,有什么我错过的吗?
答案 0 :(得分:4)
关于正则表达式和HTML,有什么我错过的吗?
是。您错过了一些HTML无法使用简单的正则表达式进行解析的事实。
答案 1 :(得分:0)
浏览器所理解的HTML对于reg表达式来说太灵活了。属性可以在任何标记中,以任何顺序,大写或小写,以及有或没有关于值的引号中弹出。特殊重点标签可以显示在任何地方。空格在正则表达式中很重要,但在HTML中却不是很重要,因此你的正则表达式必须遍布\s*
。不要求开始标记与结束标记匹配。一些开始标记包括尾部'/',这意味着它们是空标记(没有正文,没有结束标记)。最后,HTML通常是嵌套的,就正则表达而言,这几乎与图表不同。
答案 2 :(得分:0)
这实际上是你想要做的,或者只是一个更复杂的正则表达式的简单例子?如果是后者,请听取其他人的意见。如果是前者:
for line in file:
if "binary" in line:
# do stuff
如果这不起作用,您确定"binary"
在文件中吗?不,我不知道,"<i>b</i>inary"
?