五个常用的爬虫包

Web抓取是一种收集项目和工作数据的通用有效方法。在本指南中,我们将浏览Python网络抓取库的基本堆栈。

为什么只有5个包?

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

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

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

  • 您应该至少学习BeautifulSoup或lxml中的一种。选择哪个对您来说更直观(请参见下文)。
  • 如果您需要使用JavaScript收集的数据来抓取网站,请学习Selenium。
  • 如果您需要构建真正的蜘蛛或网络爬虫,而不仅仅是在这里和那里刮几页,请学习Scrapy。

那个必较适合你用餐呢 ?

  • 农场:Requests

  • 炖菜:Beautiful Soup 4

  • 色拉:lxml

  • 餐厅:Selenium

  • 厨师:Scrapy

农场/Requests

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

import requests
page = requests.get('http://examplesite.com')
contents = page.content

资源

. 快速入门指南 –官方文文件。涵盖了实用主题,例如传递参数,处理响应和配置标头。

炖菜/Beautiful Soup 4

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

from bs4 import BeautifulSoup
soup = BeautifulSoup(contents, 'html.parser')
soup.find_all('a')

资源

. 快速入门指南

. 一起使用BeautifulSoup和Requests的简短示例

色拉/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绑定,可直接在您的应用程序中对其进行控制。与您选择的解析库集成变得轻而易举。

资源

. Selenium with Python – Selenium的Python绑定文档

. 用Selenium进行Web爬网 –优秀,详尽的3部分教程,介绍如何使用Selenium爬网

. 使用Selenium和lxml

厨师/Scrapy

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

资源

. Scrapy文檔
. 使用Scrapy从网站中提取数据 -使用Scrapy抓取电子商务网站的详细教程

. Scrapy的创建者基于云的爬网服务

本作品采用《CC 协议》,转载必须注明作者和本文链接
Jason Yang
讨论数量: 3
wangchunbo

请问有解决滑动验证码,和滑动图片为正的验证码解决嘛

4年前 评论
Jason990420

看看....我没仔細看內容
滑动验证码1
滑动验证码2
滑动验证码3

4年前 评论
wangchunbo

@Jason990420 谢谢博主!爱你!这个资源太赞了!

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!