我正在尝试在python中抓取一个网页。我能够轻松获得单行标签的结果,但对于分布在多行的标签,我的代码无法检索任何内容。
在HTML源代码中,单行标记显示为:
<td><span class="facultyName">John Matthew Falletta, MD</span>
并且多个行标记显示为:
<td><span class="label">Division:</span>
</td><td>Hematology/Oncology</td>
这是我写的:
patFinderFullname = re.compile('<span class="facultyName">(.*)</span>')
fullname = re.findall(patFinderFullname,webpage) #works fine
patFinderDivision = re.compile('<span class="label">Division:</span> </td><td>(.*)</td>')
division = re.findall(patFinderDivision,webpage) #doesn't work
这里我的网页变量包含必须要删除的网址。有人可以指出,我错过了什么,或者我错在哪里?
答案 0 :(得分:4)
我强烈建议您使用BeautifulSoup。 它是一个用于解析HTML文档的Python库。
P.s:如果你想坚持自己的代码,使用\ s *跳过正则表达式中的空格。
patFinderDivision = re.compile('<span class="label">Division:</span>\s* \s*</td><td>(.*)</td>')
答案 1 :(得分:1)
只是添加一个样本到你需要什么样的正则表达式:
re.compile('<span class="label">Division:</span>\s* \s*</td><td>(.*?)</td>')