BeautifulSoup4 - python: 如何合并两个bs4.element.ResultSet 并获得一个列表?
我有两个
bs4.element.ResultSet
对象。
我们称它们为
rs1
rs2
我想要一个结果集(我们称它为rs),里面包含所有的结果。
我还需要弄清楚:
- 在处理一个(可能很大的)结果列表时,使用数组、列表还是字典更好,因为每个元素都是一个包含7个不同类型属性的对象
- 如何将合并后的结果集转换成数组/列表/字典
1 个回答
11
bs4.element.ResultSet
对象其实就是一个直接继承自list
的类。你可以用ResultSet.extend()
方法来扩展一个结果集,或者是另一个结果集:
rs1.extend(rs2)
或者你也可以简单地把两个结果集合并在一起:
newlist = rs1 + rs2
后者会创建一个list
对象,里面包含了两个结果集的内容,这样你就会失去.source
这个属性。其实这也没什么大不了的,因为在BeautifulSoup里并没有哪个地方会用到这个属性。
其实有一些方法可以让你一开始就只创建一个结果集,而不是把两个结果集合并在一起。比如说,如果你搜索的内容可以找到任意一种结果类型,返回的结果会按照文档的源代码顺序排列,而不是一个接一个。你可以在find_all()
方法中使用列表参数,例如:
soup.find_all(['a', 'link'], href=True)
这样就可以找到所有带有href
属性的a
和link
元素。