10

我正在尝试解析一个网站以提取一些存储在正文中的数据,例如:

<body>
    <b>INFORMATION</b>
    Hookups: None
    Group Sites: No
    Station: No

    <b>Details</b>
    Ramp: Yes
</body>

我想使用 BeautifulSoup4 和 RegEx 来提取 Hookups 和 Group Sites 等的值,但我对 bs4 和 RegEx 都是新手。我尝试了以下方法来获取连接值:

soup = BeautifulSoup(open('doc.html'))
hookups = soup.find_all(re.compile("Hookups:(.*)Group"))

但是搜索结果是空的。

4

1 回答 1

37

BeautifulSoupfind_all仅适用于tags。假设 HTML 如此简单,您实际上可以只使用纯正则表达式来获得所需的内容。否则,您可以使用find_all然后获取.text节点。

re.findall("Hookups: (.*)", open('doc.html').read())

您还可以使用textBeautifulSoup 4.2 的属性按标签内容搜索

soup.find_all(text=re.compile("Hookups:(.*)Group"));

编辑:从 BeautifulSoup 4.4 开始,text参数被命名为string.

于 2013-05-07T14:22:21.753 回答