【问题标题】:Beautifulsoup find different sections while preserving orderBeautifulsoup 在保持顺序的同时找到不同的部分
【发布时间】:2016-02-11 16:39:12
【问题描述】:

我希望使用 beutifulsouop 提取具有特定 class 值的 span 部分中的文本,以及具有不同 class 值的 div 部分中的文本,同时保留顺序。

以下内容除外,它不保留顺序 [即该列表的末尾包含所有div 元素,而不是它们出现在页面中时]

extract = soup.findAll('span', {"class": "value1"})  
extract += soup.findAll('div', {"class": "value2"})

注意 - 这与问题相似,但略有不同 - BeautifulSoup findAll() given multiple classes? 因为我专门查看 spandiv 代码。

【问题讨论】:

    标签: python python-2.7 beautifulsoup


    【解决方案1】:

    没有什么可以防止过滤掉错误的标签。扩展您提到的答案:

    from bs4 import BeautifulSoup
    soup = BeautifulSoup('<html><body><div class="class1"></div><i class="class1"></i><span class="class2"></span><div class="class1"></div></body></html>')
    for e in soup.findAll(True, {"class":["class1", "class2"]}):
        if e.name in ("div", "span"):
            print e
    

    过滤器也可以写成单线:

    [e for e in soup.findAll(True, {"class":["class1", "class2"]}) if e.name in ("div", "span")]
    

    顺便说一句,即使这样也可以:

     soup.findAll(["div", "span"], {"class":["class1", "class2"]})
    

    请参阅 http://www.crummy.com/software/BeautifulSoup/bs4/doc/#the-name-argument 以获取有关查找所有内容的第一个参数的文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-22
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      • 1970-01-01
      • 2020-11-01
      • 1970-01-01
      相关资源
      最近更新 更多