【问题标题】:Tag <li> not showing when using BeautifulSoup in Python在 Python 中使用 BeautifulSoup 时标签 <li> 不显示
【发布时间】:2022-01-24 07:36:23
【问题描述】:

我正在学习网页抓取,但运行 soup.findAll 时没有显示“li”标签

这是html:

<label>
<input type="checkbox">
<ul class="dropdown-content">
<li>
<a href=stuff</a>
</li>
</ul>
</label>

我试过了:

soup = BeautifulSoup(r.content,'html5lib')
dropdown = soup.findAll('ul', {'class':'dropdown-content'})
print(dropdown)

而且它只显示:

[<ul class="dropdown-content"></ul>]

任何帮助都可以。谢谢!

【问题讨论】:

    标签: python web-scraping beautifulsoup


    【解决方案1】:

    在这个命令中:dropdown = soup.findAll('ul', {'class':'dropdown-content'}),你搜索uldropdown-content 类。

    dropdown = soup.find('ul').findAll('li')
    

    【讨论】:

    • 有了这些,它返回一个空列表; []
    【解决方案2】:

    您的选择本身可以找到&lt;ul&gt;,它可能不包含任何&lt;li&gt;,因为我假设这些元素是由javascript动态生成的。为了验证这一点,应该改进问题并提供网站网址。

    如果内容是动态提供的,一种方法是使用selenium,它将像浏览器一样呈现网站并返回“完整”dom。

    注意: 在新代码中使用find_all() 而不是旧语法findAll()

    示例

    您示例中的 Html 已损坏,但如果您的汤中的 ul 中有任何 lis,您的代码就可以工作。

    import requests
    from bs4 import BeautifulSoup
    
    html = '''
    <label>
    <input type="checkbox">
    <ul class="dropdown-content">
    <li>
    <a href="stuff"></a>
    </li>
    </ul>
    </label>
    '''
    
    soup = BeautifulSoup(html,'html5lib')
    dropdown = soup.find_all('ul', {'class':'dropdown-content'})
    print(dropdown)
    

    输出

    [<ul class="dropdown-content">
    <li>
    <a href="stuff"></a>
    </li>
    </ul>]
    

    【讨论】:

      猜你喜欢
      • 2017-11-22
      • 1970-01-01
      • 2020-11-26
      • 2019-07-26
      • 1970-01-01
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多