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