Beautiful Soup 为特定的 div 找到孩子

Posted

技术标签:

【中文标题】Beautiful Soup 为特定的 div 找到孩子【英文标题】:Beautiful Soup find children for particular div 【发布时间】:2012-10-23 12:24:12 【问题描述】:

我正在尝试使用 Python->Beautiful Soup:

解析一个看起来像这样的网页

我正在尝试提取突出显示的 td div 的内容。目前我可以通过

alltd = soup.findAll('td')

   
for td in alltd:
    print td

但我试图缩小范围以搜索“tablebox”类中的 tds,它仍然可能返回 30+,但比 300+ 更易于管理。

如何提取上图中高亮的td内容?

【问题讨论】:

【参考方案1】:

知道 BeautifulSoup 在一个元素中找到的任何元素仍然具有与该父元素相同的类型是很有用的——也就是说,可以调用各种方法。

所以这是你的例子的一些工作代码:

soup = BeautifulSoup(html)
divTag = soup.find_all("div", "class": "tablebox")

for tag in divTag:
    tdTags = tag.find_all("td", "class": "align-right")
    for tag in tdTags:
        print tag.text

这将打印所有td 标记的所有文本,这些标记的类为“align-right”,其父div 的类为“tablebox”。

【讨论】:

在父循环中,标签是'div'元素而不是汤元素,所以我认为它会出错,不是吗?在“div”元素中,它没有名为“find_all”的方法

以上是关于Beautiful Soup 为特定的 div 找到孩子的主要内容,如果未能解决你的问题,请参考以下文章

Beautiful Soup - 在 div 之后提取

Beautiful Soup 并通过 ID 提取 div

Beautiful Soup 4 find_all 找不到 Beautiful Soup 3 找到的链接

使用 Beautiful Soup 查找特定类

使用 Beautiful Soup 获取所有 HTML 标签

使用Beautiful Soup 4提取特定列表项