我正在使用python和漂亮的汤从网页上抓取信息。我对源代码的以下部分感兴趣:
<ul class="breadcrumb">
<li><a href="/" title="Return to the home page">Home</a><span
class="sprite icon-delimiter"></span></li>
<li><a href="/VehicleSearch/Search/Mini" title="View our range of Mini
vehicles">Mini</a><span class="sprite icon-delimiter"></span></li>
<li class="active"><a href="/VehicleSearch/Search/Mini/Countryman"
title="View our range of Mini Countryman">Countryman</a></li>
</ul>
我想提取无序列表项目符号的文本,即“首页”,“迷你”和“乡村人”(它们都是链接)。
到目前为止,我最接近的尝试是:
for ul in soup.findAll('ul', class_='breadcrumb'):
print(ul.find('a').contents[0])
但这仅找到了“主页”链接,而没有找到其他两个。我如何找到所有三个链接文本?
答案 0 :(得分:2)
为什么不使用CSS后代组合选择器来检索类中的li标签?
from bs4 import BeautifulSoup as bs
html ='''
<ul class="breadcrumb">
<li><a href="/" title="Return to the home page">Home</a><span
class="sprite icon-delimiter"></span></li>
<li><a href="/VehicleSearch/Search/Mini" title="View our range of Mini
vehicles">Mini</a><span class="sprite icon-delimiter"></span></li>
<li class="active"><a href="/VehicleSearch/Search/Mini/Countryman"
title="View our range of Mini Countryman">Countryman</a></li>
</ul>
'''
soup = bs(html, 'lxml')
items = [item.text for item in soup.select('.breadcrumb li')]
print(items)
答案 1 :(得分:1)
尝试为链接文本添加内循环:
for ul in soup.findAll('ul', class_='breadcrumb'):
for link in ul.findAll('a'):
print(link.text)