我使用beautifulsoup来提取数据。
我有这样一个html文件:
<div class=a>
<a href='google.com'>a</a>
</div>
<div class=b>
<a href='google.com'>c</a>
<a href='google.com'>d</a>
</div>
我想提取数据'c,d',我不需要
中的数据'a'所以我这样做:
google_list = soup.findAll('a',href='google.com')
for item in google_list:
print item.strings
它将打印a,c,d。 所以我的问题是如何在
中没有'a'的情况下打印'c','d'答案 0 :(得分:4)
您可以根据类div
的{{1}}进行选择,然后在该标记上使用原始查询,以便查找其子项:< / p>
b
答案 1 :(得分:1)
几年前我停止使用Beautiful soup,并且更喜欢lxml库,其html解析器非常灵活,并且还允许xpath查询。
html = """<div class=a>
<a href='google.com'>a</a>
</div>
<div class=b>
<a href='google.com'>c</a>
<a href='google.com'>d</a>
</div>
"""
root = lxml.html.fromstring(html).getroottree()
root.xpath("//div[@class='b']/a[@href='google.com']/text()")
# ['c', 'd']
这会找到所有引用“google.com”的锚点中的所有文本,这些锚点位于任何具有“b”类的div中。