BeautifulSoup4 - python:如何合并两个bs4.element.ResultSet并获取一个列表?

dra*_*mnl 0 python beautifulsoup python-3.x

我有两个

bs4.element.ResultSet
Run Code Online (Sandbox Code Playgroud)

对象.

我们打电话给他们吧

rs1
rs2
Run Code Online (Sandbox Code Playgroud)

我想要一个结果集(让我们称之为rs)以及结果集中的所有结果.

我还需要弄明白:

  • 数组或列表或字典是否更好地浏览(可能)大的结果列表,因为每个元素将由一个由不同类型的7个属性组成的对象组成
  • 如何将合并的结果集转换为数组/列表/字典

Mar*_*ers 7

一个bs4.element.ResultSet对象是一个直线上升的子类list.您可以使用ResultSet.extend()扩展一个或另一个结果集:

rs1.extend(rs2)
Run Code Online (Sandbox Code Playgroud)

或者简单地连接两个结果集:

newlist = rs1 + rs2 
Run Code Online (Sandbox Code Playgroud)

后者list使用两个结果集的内容创建一个对象,这意味着您将丢失该.source属性.不是很大的损失,真的,看到BeautifulSoup本身没有使用该属性.

有一些方法可以创建一个开始的结果集,而不是连接这两个结果集.可以找到结果类型的搜索将导致结果以文档源顺序返回,而不是背靠背返回.您可以使用该find_all()方法的列表参数,例如:

soup.find_all(['a', 'link'], href=True)
Run Code Online (Sandbox Code Playgroud)

例如,会找到具有属性的所有元素alink元素href.