需要使用RegEx和BeautifulSoup查找文本

时间:2013-05-07 14:02:36

标签: python regex python-2.7 web-scraping beautifulsoup

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

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

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

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

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

但搜索结果是空的。

1 个答案:

答案 0 :(得分:20)

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

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

从BeautifulSoup 4.2

开始,您还可以使用text属性搜索标记内容
soup.find_all(text=re.compile("Hookups:(.*)Group"));