【问题标题】:Python Beautiful soup how to find li in ul?Python美汤如何在ul中找到li?
【发布时间】:2021-01-15 20:39:38
【问题描述】:
for i in soup.find("ul",attrs={"class":"clearfix"}):
     for durum in i.find_all('li'):
         print(durum)

我想用 BeautifulSoup 在ul 中使用li,所以我写了这个命令,但我得到了一个错误 'NavigableString' object has no attribute 'find_all'.

出了什么问题?

【问题讨论】:

  • 欢迎来到 SO!请花一分钟阅读How to Ask
  • soup.find 返回单个元素(标签的字符串),而不是可迭代列表

标签: python-3.x web-scraping beautifulsoup


【解决方案1】:

会发生什么?

您尝试迭代soup.find("ul",attrs={"class":"clearfix"}) 的结果,但这不是可迭代的,因为find() 不会给您list 它总是提供NavigableString

那么如何解决呢?

改用find_all()

for i in soup.find_all("ul",attrs={"class":"clearfix"}):

或者

for durum in soup.find("ul",attrs={"class":"clearfix"}).find_all('li'):
    print(durum)

或者

for durum in soup.select('ul.clearfix li'):
    print(durum)

【讨论】:

    【解决方案2】:

    Python 说你正在调用一个 NavigableString 对象的 find_all 方法。这个对象没有定义这个方法。

    查看官方文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc/#quick-start

    在快速入门中,有一个适合您的示例。

    find定义:https://www.crummy.com/software/BeautifulSoup/bs4/doc/#find

    它只返回一个结果。

    find_all 用于迭代所有项目https://www.crummy.com/software/BeautifulSoup/bs4/doc/#find-all

    【讨论】:

      猜你喜欢
      • 2018-04-18
      • 2019-08-23
      • 1970-01-01
      • 2019-04-11
      • 2016-12-18
      • 2013-06-19
      • 1970-01-01
      • 2018-04-12
      • 1970-01-01
      相关资源
      最近更新 更多