使用Python从各种HTML中提取文本

时间:2018-06-29 04:36:53

标签: python regex beautifulsoup lxml

假设您有一个类似的HTML块:

<div class="container">
  <div class="sub-container">
    <a href="example.com">Blue</a>
  </div>
  Black
  </br>
  <div class="sub-container">
    <a href="example.com">Yellow</a>
  </div>
  <div class="sub-container">
    <a href="example.com">Pink</a>
  </div>
  Orange
  </br>
</div>

使用python从该HTML块中提取颜色的方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以使用.text从示例html中获取所有颜色。

例如:

from bs4 import BeautifulSoup
s = """<div class="container">
  <div class="sub-container">
    <a href="example.com">Blue</a>
  </div>
  Black
  </br>
  <div class="sub-container">
    <a href="example.com">Yellow</a>
  </div>
  <div class="sub-container">
    <a href="example.com">Pink</a>
  </div>
  Orange
  </br>
</div>"""
soup = BeautifulSoup(s, "html.parser")
print(soup.text.strip().replace(" ", ""))

输出:

Blue

Black


Yellow


Pink

Orange

答案 1 :(得分:0)

要使用正则表达式提取html中的标签,您可能需要尝试以下操作:

<(\w+)[\s\w\d=\-+\.]*>(.*)</\1\s*>

然后使用第2组查找该标记内的所有内容。您还可以将正则表达式的开头更改为:

<(a) (etc...)

那只会匹配一个标签。