如何使用BeautifulSoup跳过某些标签?

时间:2018-04-11 08:35:34

标签: python loops web-scraping beautifulsoup

我是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的元素。我知道这是一个简单的问题,但我现在卡住了。任何帮助将不胜感激

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

试试这个

   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])