有数十种用于 Web 抓取的软件包…… 但是您只需要少数几个就可以抓取几乎所有网站。这是一个自己认定的说法。这里决定采用我们最喜欢的 5 个用于网络抓取的 Python 库。它们一起涵盖了所有重要基础,并且有较好的文件。

我需要学习下面的每个包吗?

不,但是每个人都会有需要,因为这是您如何与网站进行交流。其余的取决于您的用例。经验法则如下:

您应该至少学习 BeautifulSoup 或 lxml 中的一种。选择哪个对您来说更直观(请参见下文)。

如果您需要使用 JavaScript 收集的数据来抓取网站,请学习 Selenium。

如果您需要构建真正的蜘蛛或网络爬虫,而不仅仅是在这里和那里刮几页,请学习 Scrapy。

那个必较适合你用餐呢?

农场 / Requests

对于添加到数据科学工具箱中至关重要。这是一个简单但功能强大的 HTTP 包,这意味着您可以使用它来访问网页。我们将其称为 “农场”,因为您将使用它来获取菜肴的原料(即原始 HTML)(即可用数据)。它的简单性绝对是其最大的优势。它非常易于使用,您无需阅读文档即可直接进入。例如,如果您想取得页面的内容,简单如下。:但这不仅是 Requests 所能做的。它可以访问 API,发布到窗体等等。另外,它具有特色…… 这是唯一自称为非基因,有机和素食的包。你一定会喜欢的。

炖菜 / Beautiful Soup 4

有了食材之后,现在呢?现在,您将它们制成炖菜…… 美丽的炖菜。Beautiful Soup(BS4)是一个解析包,可以使用不同的解析器。解析器只是一个可以从 HTML 和 XML 文文件提取数据的程序。Beautiful Soup 的默认解析器来自 Python 的标准库。它既灵活又宽容,但是有点慢。好消息是,如果需要速度,可以将其解析器换成更快的解析器。BS4 的一个优点是它能够自动检测编码。这使它可以优雅地处理带有特殊字符的 HTML 文檔。此外,BS4 可以帮助您浏览已解析的文档并找到所需的内容。这使得构建通用应用程序变得快捷而轻松。例如,如果您想找到我们之前取得网页中的所有链接,则只有下面几行,这种迷人的简单性使其成为最受欢迎的 Python Web 抓取包之一!

色拉 /lxml

Lxml 是高性能,生产质量的 HTML 和 XML 解析包。我们称其为 “色拉”,因为无论您选择哪种饮食,您都可以依靠它对自己有益。在所有 Python 网络抓取包中,我们最喜欢使用 lxml。它简单,快速且功能丰富。即使这样,如果您有使用 XPath 或 CSS 的经验,也很容易上手。它的原始速度和力量也帮助其在行业中被广泛采用。

BeautifulSoup 对上 lxml

历史上,经验法则是:如果需要速度,请使用 lxml。如果需要处理杂乱的文档,请选择 BeautifulSoup。但是,这种区别不再成立。Beautiful Soup 现在支持使用 lxml 解析器,反之亦然。一旦学习了另一种,也很容易学习另一种。因此,一开始,我们建议您同时尝试并选择一种对您而言更直观的选择。我们更喜欢 lxml,但是许多人对 Beautiful Soup 始终如一。

. 使用 lxml 和 Requests 进行 HTML Scraping –简短而有趣的教程,介绍了使用 Requests 提取网页,然后使用 XPath 选择器来挖掘所需的数据。比正式文档更适合初学者。

餐厅 / Selenium

有时,您确实需要去餐厅吃某些菜。农场很棒,但是您找不到那里的一切。

同样,有时 Requests 包不足以抓取网站。那里的某些站点使用 JavaScript 来提供内容。例如,他们可能要等到您向下滚动页面或单击按钮才能加载某些内容。其他站点可能需要您单击窗体才能查看其内容。或从下拉菜单中选择选项。或进行部落雨舞…… 对于这些网站,您将需要更强大的功能。您将需要 Selenium(可以处理部落雨舞以外的所有事物)。Selenium 是使浏览器自动化的工具,也称为 Web 驱动程序。有了它,您实际上可以打开 Google Chrome 窗口,访问网站,然后单击链接。很酷吧?它还带有 Python 绑定,可直接在您的应用程序中对其进行控制。与您选择的解析库集成变得轻而易举。

厨师 / Scrapy

好的,我们刚才讲了很多。您已经有了 Requests 和 Selenium,可以从网页中获取 HTML / XML。然后,您可以使用 Beautiful Soup 或 lxml 将其解析为有用的数据。但是,如果您还需要更多呢?如果您需要一个可以系统地爬整个网站的完整蜘蛛,该怎么办?Scrapy!从技术上讲,Scrapy 甚至不是一个包…… 这是一个完整的 Web 抓取框架。这意味着您可以使用它来管理请求,保留用户会话,遵循复位向并处理输出管道。这也意味着您可以与其他 Python Web 抓取包交换单个模块。例如,如果您需要插入 Selenium 来抓取动态网页。因此,如果您需要重新使用搜寻器,对其进行缩放,管理复杂的数据管道或制作其他一些复杂的蜘蛛,那么 Scrapy 就是为您量身定制的。

————————————————

转自链接:五个常用的爬虫包 | Python 技术论坛