文章一键采集工具(5个用于网络抓取的Python库,你知道吗?)
优采云 发布时间: 2022-03-14 15:06文章一键采集工具(5个用于网络抓取的Python库,你知道吗?)
有几十个用于网络抓取的包......但你只需要几个就可以抓取几乎所有 网站。这是一个自我认同的声明。在这里,我们决定将我们最喜欢的 5 个 Python 库用于网络抓取。它们一起涵盖了所有重要的基础,并且有据可查。
我需要学习下面的每个包吗?
不,但每个人都需要它,因为这是您与 网站 交流的方式。其余的取决于您的用例。经验法则如下:
您应该至少学习 BeautifulSoup 或 lxml 之一。选择哪个对您来说更直观(见下文)。
如果您需要使用 JavaScript 采集的数据来抓取 网站,请学习 Selenium。
如果您需要构建一个真正的蜘蛛或网络爬虫,而不仅仅是在这里和那里刮几页,学习 Scrapy。
哪一种更适合你的用餐?
农场/请求
必不可少的添加到您的数据科学工具箱。这是一个简单但功能强大的 HTTP 包,这意味着您可以使用它来访问网页。我们称它为“农场”,因为您将使用它来获取菜肴的成分(即原创 HTML)(即可用数据)。它的简单性绝对是它最大的优势。它非常易于使用,您无需阅读文档即可直接使用。比如要获取一个页面的内容,就这么简单。: 但这不仅仅是 Requests 可以做的。它可以访问 API、发布到表单等。此外,它还具有……唯一自称非基因、有机和纯素的袋子。你会喜欢的。
炖菜/美汤 4
有了原料之后,接下来呢?现在你把它们做成炖菜……一道漂亮的炖菜。Beautiful Soup (BS4) 是一个可以使用不同解析器的解析包。解析器只是一个可以从 HTML 和 XML 文本文件中提取数据的程序。Beautiful Soup 的默认解析器来自 Python 的标准库。它灵活且宽容, 但有点慢。好消息是,如果您需要速度,可以将其解析器换成更快的解析器。BS4 的优点之一是它能够自动检测编码。带有特殊字符的 HTML 文档。此外, BS4可以帮助你浏览解析后的文档,找到你要找的东西。这使得构建通用应用程序变得快速和容易。例如,如果你想找到我们之前的网页中的所有链接,只需几行以下,
沙拉/lxml
Lxml 是一个高性能、生产质量的 HTML 和 XML 解析包。我们称它为“沙拉”,因为无论您选择哪种饮食,您都可以指望它对您有好处。在所有 Python 网页抓取包中,我们最喜欢使用 lxml。它简单、快速且功能丰富。即便如此,如果您有使用 XPath 或 CSS 的经验,也很容易上手。它的原创速度和力量也帮助它在行业中获得广泛采用。
BeautifulSoup 与 lxml
从历史上看,经验法则是:如果您需要速度,请使用 lxml。如果您需要处理凌乱的文档,请选择 BeautifulSoup。然而,这种区别不再成立。Beautiful Soup 现在支持使用 lxml 解析器,反之亦然。一旦你学会了另一个,就很容易学习另一个。因此,在开始时,我们建议您尝试并选择一个对您来说更直观的选项。我们更喜欢lxml,但很多人都和Beautiful Soup一致。
. HTML Scraping with lxml and Requests - 关于使用 Requests 提取网页然后使用 XPath 选择器挖掘所需数据的简短而有趣的教程。比官方文档更适合初学者。
餐厅 / Selenium
有时,您确实需要去餐馆吃某些菜肴。农场很棒,但你不会在那里找到一切。
此外,有时 Requests 包不足以获取 网站。一些网站使用 JavaScript 来提供内容。例如,在您向下滚动页面或单击按钮之前,它们可能不会加载某些内容。其他网站可能要求您单击表单以查看其内容。或者从下拉菜单中选择一个选项。或者来一场部落雨舞……对于这些 网站,你将需要更强大的东西。您将需要 Selenium(可以处理除部落雨舞之外的所有事情)。Selenium 是一种用于自动化浏览器的工具,也称为 Web 驱动程序。有了它,您实际上可以打开一个 Google Chrome 窗口,访问 网站,然后单击一个链接。很酷,对吧?它还带有 Python 绑定,可以直接在您的应用程序中控制它。与您选择的解析库集成是轻而易举的事。
厨师/刮板
好吧,我们刚才谈了很多。你已经有 Requests 和 Selenium 来从网页获取 HTML/XML。然后,您可以使用 Beautiful Soup 或 lxml 将其解析为有用的数据。但是如果你需要更多呢?如果您需要一个可以系统地爬取整个 网站 的完整爬虫怎么办?刮!从技术上讲,Scrapy 甚至不是一个包……它是一个完整的网络抓取框架。这意味着您可以使用它来管理请求、保留用户会话、遵循重置指示和处理输出管道。这也意味着您可以与其他 Python Web 抓取包交换单个模块。例如,如果您需要插入 Selenium 来抓取动态网页。因此,如果您需要重用爬虫、扩展它、管理复杂的数据管道或制作其他复杂的爬虫,Scrapy 适合您。
———————————————
来自链接:五个常用的爬虫包 | Python技术论坛