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

时间:2014-11-03 15:56:37

标签: python python-3.x beautifulsoup

我有两个

bs4.element.ResultSet

对象。

我们叫他们

rs1
rs2

我希望一个结果集(我们称之为 rs ),结果集中包含所有结果。

我还需要弄明白:

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

1 个答案:

答案 0 :(得分:5)

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

rs1.extend(rs2)

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

newlist = rs1 + rs2 

后者使用两个结果集的内容创建一个list对象,这意味着您将丢失.source属性。不是很大的损失,实际上,看起来没有什么在BeautifulSoup本身使用该属性。

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

soup.find_all(['a', 'link'], href=True)
例如,

会找到具有a属性的所有linkhref元素。