【发布时间】:2019-02-22 21:36:00
【问题描述】:
我正在开发一个程序,该程序根据不同的正则表达式从 HTML 文件中抓取一些信息。我遇到了以下代码的错误
我的 HTMLParser 子类:
class MyHtmlParser(HTMLParser):
def __init__(self):
self.reset()
self.title = []
def handle_data(self, d):
Result = re.search(r'ANMELDELSE .*(?=</b>)',d)
if Result:
self.title.append(Result.group(0))
def return_data(self):
return self.title
运行代码:
with open(r'....', "r") as f: #correct path to local test.html
page = f.read()
parser.feed(page)
parser.return_data()
现在 HTML 文件真的很乱,而且是挪威语,但这里有一个应该触发它的子集
<p style="margin: 0cm 0cm 0pt;"><span style="text-decoration: underline;">Sak 428/18-123, 03.09.2018 </span></p>
<p style="margin: 0cm 0cm 0pt;"><b> </b></p>
<p style="margin: 0cm 0cm 0pt;"><b>ANMELDELSE FOR TRAKASSERING</b></p>
这应该选择“ANMELDELSE FOR TRAKASSERING”,它在https://regex101.com/ 和https://regexr.com/ 中都可以,但是在执行代码时,我得到的只是一个空列表。该代码已与以前的正则表达式调用一起使用,所以我有点迷茫。
希望有人能帮忙!
【问题讨论】:
-
如果我在这里使用正则表达式,我会使用接近
r'ANMELDELSE[^<>]*的东西。你确定那里的空间不是不间断的空间吗? -
调用
handle_data(self, d)时传入的是什么对象d? -
这真的帮助了@WiktorStribiżew!你介意澄清你所说的不间断空间是什么意思吗?当我尝试过的两个网站都给了我正确的答案时,我感到非常困惑..
-
它是一个
\u00A0char,非常类似于常规空格。 -
大概就是这样,现在看来可以了!谢谢@WiktorStribiżew!
标签: regex python-2.7 html-parsing