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

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

最佳答案

您正在寻找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

关于python - 如何使用 BeautifulSoup 跳过某些标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49770315/

相关文章:

python - 情绪分析中的否定处理

c - SDL 中的退出事件循环

c++ - 在 C++ 中,在 For 循环中使用非递增变量是否可以接受?

javascript - 如何在函数参数中使用循环并将结果记录到控制台

python - scrapy - 如果跟随无限网站则终止抓取

python - 由于未加载渐变而导致 Finetune SavedModel 失败

Python-libvirt

python - 如何修复 "Unicode strings with encoding declaration are not supported."

python - 如何从 python 脚本运行并保存 scrapy 状态

python - 使用 Python/PhantomJS/Selenium 滚动无限页面