2

我正在尝试在 python 中抓取网页。我能够轻松地获得单行标签的结果,但是对于分布在多行的标签,我的代码无法检索任何内容。

在 HTML 源代码中,单行标签显示为:

<td><span class="facultyName">John Matthew Falletta, MD</span>

并且多个行标签显示为:

<td><span class="label">Division:</span>
            &nbsp;&nbsp;
                  </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>&nbsp;&nbsp;</td><td>(.*)</td>')

division = re.findall(patFinderDivision,webpage)       #doesn't work

这里我的网页变量包含必须被抓取的 url。有人可以指出,我错过了什么,或者我错在哪里?

4

2 回答 2

5

我强烈建议您使用BeautifulSoup。它是一个用于解析 HTML 文档的 Python 库。

Ps:如果您想坚持使用自己的代码,请使用 \s* 跳过正则表达式中的空格。

patFinderDivision = re.compile('<span class="label">Division:</span>\s*&nbsp;&nbsp;\s*</td><td>(.*)</td>')
于 2013-02-15T05:03:26.377 回答
1

只需将示例添加到您需要拉出除法的哪种正则表达式:

re.compile('<span class="label">Division:</span>\s*&nbsp;&nbsp;\s*</td><td>(.*?)</td>')
于 2013-02-15T05:23:38.790 回答