美丽的汤选择Vs Find_all数据类型

时间:2017-10-19 18:45:48

标签: python beautifulsoup

我是webscraping的新手,似乎有两种方法来收集我正在寻找的所有html数据。

option_1 = soup.find_all('div', class_='p')

option_2 = soup.select('div.p')

我看到option_1返回类'bs4.element.ResultSet'而option_2返回类'list'

我仍然可以使用for循环遍历option_1,所以有什么区别:

  1. select and find_all
  2. 'list'和bs4.element.ResultSet

1 个答案:

答案 0 :(得分:2)

您应该找到第一个问题的答案here(在评论中通过t-m-adam链接)。

至于第二个问题,让我们来看看源代码:)

class ResultSet(list):
    """A ResultSet is just a list that keeps track of the SoupStrainer
    that created it."""
    def __init__(self, source, result=()):
        super(ResultSet, self).__init__(result)
        self.source = source

    def __getattr__(self, key):
        raise AttributeError(
            "ResultSet object has no attribute '%s'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?" % key
        )

ResultSet只是list的子类,用于存储find_all()方法的结果。