【问题标题】:Finding <div> with Beautifulsoup用 Beautifulsoup 查找 <div>
【发布时间】:2018-01-04 01:48:44
【问题描述】:

我想在 div 标签中提取一段文本。我看过几篇讨论各种 div 属性的帖子,但我想要的标签没有属性 - 它只是

以下是 html 的摘录。上面和下面有几十个div标签,但只有这一个只是

<div>
      <!-- Some text. -->
      <i>
       [Text I want block 1]
      </i>
      text I want 1
      <br/>
      text I want 2
      <br/>
      text I want 3
      <br/>
      <br/>
 </div>

但是,任何带有“div”的 find 方法都会返回太多。我尝试了以下方法:

1) 字符串和标签搜索拾取每个包含 div 的标签

soup.find("div")

soup.div

3) 隔离父级,然后在其中搜索的 div 仍然返回太多。

divParent = soup.find("div", class_="col-xs-12 col-lg-8 text-center")
divParent.find("div")

有什么想法吗? div 似乎太常见的标签/字符串无法隔离。

【问题讨论】:

  • 你不能直接从 div 获取元素 - 也许它们有有用的属性。你可以试试css选择器selector('div i')。您还可以手动计算 div 并使用 index - 即。获取第三个 div find_all('div')[2]
  • 最好在问题中添加真实的url,然后我们可以看到问题和测试解决方案。

标签: html python-3.x beautifulsoup


【解决方案1】:

这可能是完成工作的一种方式:

from bs4 import BeautifulSoup

content='''
<div>
      <!-- Some text. -->
      <i>
       [Text I want block 1]
      </i>
      text I want 1
      <br/>
      text I want 2
      <br/>
      text I want 3
      <br/>
      <br/>
 </div>
'''

from bs4 import BeautifulSoup

soup = BeautifulSoup(content,"lxml")
data = ''.join([item.parent.text.strip() for item in soup.select('div i')])
print(data)

【讨论】:

  • 那行得通。谢谢。只是想了解这里发生了什么。您正在加入('' 做什么?)从 for 循环创建的列表。
  • 整理前不小心保存了上面的评论。我的意思是说:您正在加入列表中的结果。 ''有什么作用?您正在选择“div i”标签,然后选择其父标签。对吗?
  • 这是连接"".join()的基本语法,注意点前的两个双引号。您可以查看此链接以清楚了解加入功能Link。这不是你问的吗?
  • 这就是问题所在。谢谢。我现在明白了。
猜你喜欢
  • 1970-01-01
  • 2019-10-08
  • 1970-01-01
  • 2018-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
相关资源
最近更新 更多