需要使用RegEx和BeautifulSoup查找文本

bco*_*713 4 python regex beautifulsoup web-scraping python-2.7

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

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

    <b>Details</b>
    Ramp: Yes
</body>
Run Code Online (Sandbox Code Playgroud)

我想使用BeautifulSoup4和RegEx来提取Hookups和Group Sites等的值,但我对bs4和RegEx都不熟悉.我尝试了以下方法来获取Hookups值:

soup = BeautifulSoup(open('doc.html'))
hookups = soup.find_all(re.compile("Hookups:(.*)Group"))
Run Code Online (Sandbox Code Playgroud)

但搜索结果是空的.

Exp*_*lls 21

BeautifulSoup find_all仅适用于标签.假设HTML很简单,你实际上可以只使用一个纯正则表达式来获得你需要的东西.否则,您可以使用find_all然后获取.text节点.

re.findall("Hookups: (.*)", open('doc.html').read())
Run Code Online (Sandbox Code Playgroud)

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

soup.find_all(text=re.compile("Hookups:(.*)Group"));
Run Code Online (Sandbox Code Playgroud)

  • 这个答案是不正确的,您可以使用`soup.find_all(text = re.compile(...))` (2认同)