【问题标题】:Scraping text from unordered lists using beautiful soup and python使用漂亮的汤和 python 从无序列表中抓取文本
【发布时间】:2019-05-23 21:32:36
【问题描述】:

我正在使用 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>

我想提取无序列表项目符号的文本,即“Home”、“Mini”和“Countryman”(也是所有链接)。

到目前为止,我最接近的尝试是:

for ul in soup.findAll('ul', class_='breadcrumb'):
    print(ul.find('a').contents[0])

但这只找到了“主页”链接,而没有找到其他两个。请问如何才能找到所有三个链接文本?

【问题讨论】:

    标签: python web-scraping beautifulsoup


    【解决方案1】:

    为什么不使用 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)
    

    【讨论】:

      【解决方案2】:

      尝试为链接文本添加内循环:

      for ul in soup.findAll('ul', class_='breadcrumb'):
          for link in ul.findAll('a'):
              print(link.text)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-23
        • 2020-03-22
        • 1970-01-01
        • 2018-10-19
        • 2022-01-08
        • 2013-11-25
        • 2016-04-20
        相关资源
        最近更新 更多