【问题标题】:How to skip certain tags with BeautifulSoup?如何使用 BeautifulSoup 跳过某些标签?
【发布时间】:2018-04-11 08:35:33
【问题描述】:

我是 Python 的初学者,目前我正在尝试使用 BeautifulSoup 编写一个简单的脚本,以从网页中提取一些信息并将其写入 CSV 文件。我在这里要做的是浏览网页上的所有列表。在我希望使用的特定 HTML 文件中,只有一个 'ul' 有一个 id,我希望跳过那个并将所有其他列表元素保存在一个数组中。我的代码不起作用,我不知道如何解决我的问题。

for ul in content_container.findAll('ul'):
    if 'id' in ul:
        continue
    else:
        for li in ul.findAll('li'):
            list.append(li.text)
            print(li.text)

当我将列表打印出来时,我仍然可以看到 ul 中带有 id 的元素。我知道这是一个简单的问题,但我现在被困住了。任何帮助将不胜感激

【问题讨论】:

    标签: python loops web-scraping beautifulsoup


    【解决方案1】:

    您正在寻找id=False。使用这个:

    for ul in content_container.find_all('ul', id=False):
        for li in ul.find_all('li'):
            list.append(li.text)
            print(li.text)
    

    这将忽略所有以id 为属性的标签。此外,您的方法几乎是正确的。您只需要检查标签属性中是否存在id,而不是标签本身(正如您所做的那样)。所以,使用if 'id' in ul.attrs() 而不是if 'id' in ul

    【讨论】:

      【解决方案2】:

      试试这个

         all_uls = content_container.find_all('ul')
          #assuming that the ul with id is the first ul 
          for i in range(1, len(all_uls)):
                    print(all_uls[i])
      

      【讨论】:

      • OP 从来没有提到 ul with id 是第一个 ul。所以,最好不要这样假设。
      • 而且,如果是这样的话,简单的切片就可以了。 all_uls = content_container.find_all('ul')[1:]
      猜你喜欢
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      • 2023-01-03
      • 2019-11-02
      • 2018-09-06
      • 1970-01-01
      相关资源
      最近更新 更多