【问题标题】:A way to extract certain <p> tag using BeautifulSoup?一种使用 BeautifulSoup 提取某些 <p> 标签的方法?
【发布时间】:2017-03-30 20:29:09
【问题描述】:

我被困在使用 BS4 从 p 标签中提取文本的当前问题上。

出于参考目的,链接是 HTML 的屏幕截图。

我需要提取的具体是包含文本的p标签,但还有其他p标签存在。

我目前拥有的是:

soup2 = BeautifulSoup(response2, 'html.parser')
div = soup2.find("div", {"id": "body"}).find_all('p')
print (div[5])

我知道 find_all 创建了一个包含所有 p 标签的列表,并且我可能会找到我正在寻找的 p 标签的列表索引。但是,这会带来一个问题,因为我在具有与图片中类似的 HTML 布局的其他页面上多次执行此提取。例如,并非每个 find_all 列表都会将我要查找的 p 标记文本作为第 5 个索引。

有什么建议吗?

【问题讨论】:

  • 屏幕截图中的&lt;p&gt; 元素没有识别特征,即没有类或id 或任何其他属性。那么如果&lt;p&gt; 元素并不总是第5 个索引,你如何确定它想要哪个?是否总是在 &lt;p&gt; 元素之后以“Last statement:”作为文本?
  • 如果我可以用另一种方式表达,当您查看这些文档中的任何一个时,页面的哪个功能可以识别您想要的段落?

标签: python html beautifulsoup


【解决方案1】:

find_all 接受许多参数。

您可以使用它们来更好地过滤结果。

https://www.crummy.com/software/BeautifulSoup/bs4/doc/#find-all

您还可以遍历所有元素并找到最可能的元素。

创建一个包含 100 个 html 页面的样本,并找到适用于所有这些页面的方法/策略组合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 2010-10-06
    • 2014-12-01
    • 1970-01-01
    • 2016-04-01
    • 2019-11-15
    • 2021-09-12
    相关资源
    最近更新 更多