如何在带有 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 选择器排除其他值(都是跨标签),您可能必须手动过滤掉带有 m²
的值以获得最终输出。
像这样:
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 代码中找到这个通用标签(美丽的汤)的主要内容,如果未能解决你的问题,请参考以下文章