本文概述
- Scrapy
- MechanicalSoup
- Jaunt
- Jauntium
- Storm Crawler
- Norconex
- Apify
- Kimurai
- Colly
- Grablab
- BeautifulSoup
过去几年中, 网络抓取领域取得了重大进展。
Web抓取被用作在Web上收集和分析数据的一种方式。为了支持此过程, 已经提出了许多框架来满足各种用例的不同要求。
让我们看一些流行的网络抓取框架。
以下是自托管的解决方案, 因此你必须自行安装和配置。你可以查看此帖子以获取基于云的抓取解决方案。
Scrapy
Scrapy是基于Python的协作框架。它提供了一套完整的库。完全异步的, 可以更快地接受并处理请求。
Scrapy的一些罐头好处包括:
- 性能超快
- 最佳内存使用
- 非常类似于Django框架
- 高效的比较算法
- 易于使用的功能以及详尽的选择器支持
- 通过添加自定义中间件或用于自定义功能的管道, 可轻松自定义框架
- 随身携带
- 提供其云环境以运行资源密集型操作
如果你认真学习Scrapy, 那么本课程将推荐给你。
MechanicalSoup
MechanicalSoup可以模拟网页上的人类行为。它基于Web解析库BeautifulSoup, 该库在简单站点中效率最高。
好处
- 整洁的库, 代码开销少
- 解析更简单的页面时速度很快
- 模拟人类行为的能力
- 支持CSS和XPath选择器
当你尝试模拟诸如等待某个事件或单击某些项目以打开弹出窗口而不仅仅是抓取数据等人类行为时, MechanicalSoup很有用。
Jaunt
Jaunt设施包括自动抓取, 基于JSON的数据查询和无头超轻型浏览器。它支持跟踪每个正在执行的HTTP请求/响应。
使用Jaunt的重要好处包括:
- 有组织的框架可满足你所有的Web抓取需求
- 允许基于JSON查询网页数据
- 支持通过表格和表格进行抓取
- 允许控制HTTP请求和响应
- 轻松与REST API接口
- 支持HTTP / HTTPS代理
- 支持HTML DOM导航中的搜索链接, 基于Regex的搜索, 基本身份验证
对于Jaunt, 需要注意的一点是其浏览器API不支持基于Javascript的网站。这可以通过使用下面讨论的Jauntium来解决。
Jauntium
Jauntium是Jaunt框架的增强版本。它不仅解决了Jaunt的弊端, 而且增加了更多功能。
- 能够创建可抓取页面并根据需要执行事件的网络机器人
- 轻松搜索和操作DOM
- 通过利用其网页抓取功能来编写测试用例的功能
- 支持与Selenium集成以简化前端测试
- 支持基于Javascript的网站, 相比Jaunt框架, 这是一个加分项
适用于需要自动化某些流程并在不同浏览器上对其进行测试的情况。
Storm Crawler
Storm Crawler是成熟的基于Java的Web搜寻器框架。它用于在Java中构建可扩展和优化的Web爬网解决方案。首选使用Storm Crawler来提供输入流, 其中URL通过流进行发送以进行爬网。
好处
- 高度可扩展, 可用于大规模递归调用
- 弹性自然
- 出色的线程管理, 可减少爬网的延迟
- 易于使用其他库扩展库
- 所提供的Web爬行算法相对而言效率更高
Norconex
Norconex HTTP收集器允许你构建企业级搜寻器。它以可在许多平台上运行的已编译二进制文件的形式提供。
好处
- 在普通服务器上可以抓取多达数百万个页面
- 能够抓取Pdf, Word和HTML格式的文档
- 能够直接从文档中提取数据并进行处理
- 支持OCR从图像中提取文本数据
- 能够检测内容的语言
- 可以配置爬行速度
- 可以设置为在页面上重复运行以不断比较和更新数据
Norconex可以集成到Java以及bash命令行中。
Apify
Apify SDK是基于NodeJS的爬网框架, 与上面讨论的Scrapy非常相似。它是用Javascript构建的最佳Web爬网库之一。尽管它可能不如基于Python的框架那么强大, 但它相对较轻, 并且更易于编写代码。
好处
- 内置的支持NodeJS插件, 例如Cheerio, Puppeteer等
- 具有自动缩放池, 可同时开始抓取多个网页
- 快速浏览内部链接并根据需要提取数据
- 更简单的库, 用于对爬虫进行编码
- 可以抛出JSON, CSV, XML, Excel和HTML形式的数据
- 在无头Chrome上运行, 因此支持所有类型的网站
Kimurai
Kimurai是用Ruby编写的, 基于流行的Ruby宝石Capybara和Nikogiri, 这使开发人员更容易理解如何使用该框架。它支持与Headless Chrome浏览器, Phantom JS以及简单的HTTP请求的轻松集成。
好处
- 可以在一个进程中运行多个蜘蛛
- 在Capybara gem的支持下支持所有事件
- 如果javascript执行达到限制, 则自动重启浏览器
- 自动处理请求错误
- 可以利用处理器的多个内核并使用简单的方法执行并行处理
Colly
Colly是一个平滑, 快速, 优雅且易于使用的框架, 即使对于Web抓取领域的初学者也是如此。 Colly允许你根据需要编写任何类型的爬虫, 蜘蛛和刮板。构造要抓取的数据时, 这非常重要。
好处
- 每秒能够处理超过1000个请求
- 支持自动会话处理和cookie
- 支持同步, 异步以及并行抓取
- 重复执行操作时可缓存支持以加快刮取Web
- 了解robots.txt, 并防止抓取不需要的页面
- 开箱即用地支持Google App Engine
Colly可以很好地满足数据分析和挖掘应用程序的需求。
Grablab
Grablab本质上具有高度可扩展性。它可用于将几行代码的简单Web抓取脚本构建为复杂的异步处理脚本, 以抓取一百万页。
好处
- 高度可扩展
- 支持并行和异步处理以同时刮擦百万页
- 入门简单, 但功能强大, 足以编写复杂的任务
- API抓取支持
- 支持为每一个要求建造蜘蛛
Grablib内置了对处理请求响应的支持。因此, 它也允许通过Web服务进行抓取。
BeautifulSoup
BeautifulSoup是一个基于Python的Web抓取库。它主要用于HTML和XML Web抓取。通常, BeautifulSoup是在需要更好的搜索和索引算法的其他框架之上使用的。例如, 上面讨论的Scrapy框架使用BeautifulSoup作为其依赖项之一。
BeautifulSoup的好处包括:
- 支持解析损坏的XML和HTML
- 当时最高效的解析器可用于此目的
- 轻松与其他框架集成
- 占地面积小, 重量轻
- 带有预建的过滤和搜索功能
如果有兴趣学习BeautifulSoap, 请查看此在线课程。
总结
你可能已经注意到, 它们全部基于Python或Nodejs, 因此作为开发人员, 你必须精通下划线编程语言。它们都是开源的或免费的, 因此请尝试看看哪种对你的业务有效。
评论前必须登录!
注册