【问题标题】:Include multiple class names in findAll in BeautifulSoup4 [duplicate]在 BeautifulSoup4 的 findAll 中包含多个类名 [重复]
【发布时间】:2016-03-29 18:18:02
【问题描述】:

我在python脚本中有一行代码如下所示

for summaries in soup.findAll('div',{'class':'cb-lv-scrs-col cb-font-12 cb-text-complete'}):
#do something with summaries

但是,我希望摘要还包括来自 div 的项目以及另一个名为 cb-scag-mtch-status cb-text-inprogress 的类

我已经尝试过这里给出的以下 - BeautifulSoup findAll() given multiple classes?

for summaries in soup.findAll('div',{'class':['cb-lv-scrs-col cb-font-12 cb-text-complete','cb-scag-mtch-status cb-text-inprogress']}):
#do something with summaries

但这不起作用。有什么问题,我该如何解决?

【问题讨论】:

  • 每个类之间的空格表示多个类,因此在第一行中搜索类cb-lv-scrs-colcb-font-12cb-text-complete
  • 我不这么认为。在源代码中,它被赋予了 class="cb-lv-scrs-col cb-font-12 cb-text-complete" 所以我认为它的意思是整个类。
  • 我尝试了上面我的问题中提到的那个问题中提到的解决方案。它没有用。
  • 正则表达式解决方案怎么样?如果它不起作用也没关系,这仍然是一个重复的问题,应该关闭。
  • 我不喜欢使用正则表达式,因为这是我编写程序的主要目的。在不使用正则表达式的情况下抓取网页。

标签: python beautifulsoup


【解决方案1】:

我会做一个简单的CSS selector:

soup.select('div[class="cb-lv-scrs-col cb-font-12 cb-text-complete"],div[class="cb-scag-mtch-status cb-text-inprogress"]')

但是,我怀疑您是否真的需要或应该检查元素上存在的所有类,这还不够:

soup.select('div.cb-text-complete,div.cb-text-inprogress')

【讨论】:

  • 这可用于查找具有上述类的所有元素,例如 findAll 。我刚检查过。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
  • 2015-03-19
  • 2018-07-20
  • 2013-12-26
  • 1970-01-01
  • 2021-12-18
  • 2022-12-15
相关资源
最近更新 更多