如何在带有 BS4 的 HTML 代码中找到这个通用标签(美丽的汤)

Posted

技术标签:

【中文标题】如何在带有 BS4 的 HTML 代码中找到这个通用标签(美丽的汤)【英文标题】:How to find this generic tag inside a HTML code with BS4 (beautiful soup) 【发布时间】:2020-03-02 05:49:57 【问题描述】:

我试图找到这个“通用”标签(只有一个“跨度”标签)。我尝试了很多东西,但没有一个成功。我尝试了下面的代码,但给我带来的比我想要的更多(我只是想达到“573 m²”......

代码:

Meters = [headline3.get_text() for headline3 in soup.find_all("ul", "class": "feature__container")]

输出:

['\n        573 m²\n        \n        4 \n        \n        4 \n        \n        4 \n        ',

html 代码(图片):1:

【问题讨论】:

您可以将 html 示例发布为文本而不是图像吗?以及想要的输出? 【参考方案1】:

首先,您可以找到所有li 元素。然后,为每个 li 元素获取 first 直接 span 子元素,然后访问它的文本。

例子:

meters = [li.find("span", recursive=False).get_text() for li in soup.find_all("li",  "class" : "feature__item" ) ]

由于没有其他方法可以使用 HTML 选择器排除其他值(都是跨标签),您可能必须手动过滤掉带有 的值以获得最终输出。

像这样:

result = list(map(int, [i.replace('m²', '').strip() for i in meters if 'm²' in i]))

输出:

[351, 573 ...]

参考:

How to find children of nodes using BeautifulSoup

【讨论】:

嗨 Rithin,非常感谢您的帮助。我试过你上面的代码,但它仍然返回相同的:'\n 351 m²\n','\n 4 \n','\n 3 \n','\n 5 \n','\n 573 m² \n ', '\n 4 \n ', '\n 4 \n ', '\n 4 \n ', '\n 270 平方米\n ', '\n 3 \n ', '\n 3 \ n ', '\n 3 \n ETc...我期待:351、573、...谢谢! @Ferby,您能否将 html 输入添加为问题中的文本,以便我尝试?你的预期输出呢? 嗨,我的预期输出是:[351, 573, 270, 350,...] 只是数字!它带给我的不仅仅是必要的。网址是:zapimoveis.com.br/aluguel/casas-de-condominio/sp+sao-paulo/…我试图复制但我不知道如何复制所有的行,对不起!哈哈,这是一个网络抓取项目。 @Ferby,请查看更新后的答案。您必须手动过滤带有“m²”的文本并取回整数。 Rithin,非常感谢兄弟!!我真的陷入了困境,你帮了我很多!

以上是关于如何在带有 BS4 的 HTML 代码中找到这个通用标签(美丽的汤)的主要内容,如果未能解决你的问题,请参考以下文章

如何在Pycharm中添加新的模块

如何使用 bs4 或 lxml 在 Python 中找到 XML 标记的文本行?

如何在文本文件中将输出复制到 bs4 中的终端

找到html元素bs4的孩子的最快方法

如何使用BS4从标签外部提取文本

如何使用 python(最好是 BS4)从 Google 图片(或 bing)中找到图片的 url?