解析缺失的元素



我需要使用python bs4从html解析一些信息

<div class="section">
<a class="site" href="www.example1.com">Site1</a>                   
</div>
<div class="section">
<a class="bogus" href="www.idontneed1.com">Idontneedthis1</a>               
</div>
<div class="section">
<a class="site" href="www.example2.com">Site2</a>                   
</div>
<div class="section">
<a class="site" href="www.example3.com">Site3</a>                   
</div>
<div class="section">
<a class="bogus" href="www.idontneed2.com">Idontneedthis2</a>                   
</div>

我想把这些href解析成一个像这样的列表:

[{"site":"www.example1.com"}, {"site":" "}, {"site":"www.example2.com"}, {"site":"www.example3.com"}, {"site":" "}]

改为:

[{"site":"www.example1.com"}, {"site":"www.example2.com"}, {"site":"www.example3.com"}]

我已经有一个过滤器来排除"虚假"但我需要一个代码来写if "节"不要有"站点"。然后离开"。

请记住这只是一个例子——我需要一个通用的解决方案

感谢

您可以在测试特定类是否存在的地方使用列表推导。例如:

out = [
{"site": " " if "bogus" in a["class"] else a["href"]}
for a in soup.select(".section > a")
]
print(out)

打印:

[
{"site": "www.example1.com"},
{"site": " "},
{"site": "www.example2.com"},
{"site": "www.example3.com"},
{"site": " "},
]

最新更新