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

Mws*_*cer 8 python beautifulsoup

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

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

option_2 = soup.select('div.p')
Run Code Online (Sandbox Code Playgroud)

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

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

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

Jat*_*mir 3

您应该在这里找到第一个问题的答案(由评论中的tm-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
        )
Run Code Online (Sandbox Code Playgroud)

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