[工具/软件] 开源通用网络爬虫框架
目录
0 概述
通用万能爬虫 vs 聚焦领域爬虫
1 Java Spider
spider-flow
- Home URL : https://www.spiderflow.org/
spider-flow 是一个爬虫平台,以图形化方式定义爬虫流程,无需代码即可实现一个爬虫
- Github Star : 7.7K
Webmagic
- Home URL : http://webmagic.io/docs/en/
WebMagic是一个简单灵活的Java爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。
特性:
简单的API,可快速上手
模块化的结构,可轻松扩展
提供多线程和分布式支持
- Github URL : 10.7K
Heritrix 3
- Home URL : heritrix.readthedocs.io/
Heritrix 是一个开源,可扩展的 web 爬虫项目。用户可以使用它来从网上抓取想要的资源。Heritrix 设计成严格按照 robots.txt 文件的排除指示和 META robots 标签。其最出色之处在于它良好的可扩展性,方便用户实现自己的抓取逻辑。
- Github Star : 2.4K
Selenium WebDriver
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.0.1</version>
</dependency>
- docs & demo
爬虫辅助开发类库
- jsoup
HTML解析工具
- httpclient / okhttp / ...
http请求工具
2 Python Spider
Scrapy
- Language : Python
- GitHub Star : 46.4K
20230306
- Home URL : https://scrapy.org/community/
【简介】
Scrapy 是一种高速的高层 Web 爬取和 Web 采集框架,可用于爬取网站页面,并从页面中抽取结构化数据。
Scrapy 的用途广泛,适用于从数据挖掘、监控到自动化测试。
Scrapy 设计上考虑了从网站抽取特定的信息,它支持使用 CSS 选择器和 XPath 表达式,使开发人员可以聚焦于实现数据抽取。
对于熟悉 Python 的开发人员,只需几分钟就能建立并运行 Scrapy。
支持运行在 Linux、Mac OS 和 Windows 系统上。
【特性】
内置支持从 HTML 和 XML 抽取数据、使用扩展的 CSS 选择器(Selector)和 XPath 表达式等特性。
支持以多种格式(JSON、CSV、XML)生成输出。
基于 Twisted 构建。
稳健的支持,自动检测编码方式。
快速,功能强大。
PySpider
- Home URL : https://docs.pyspider.org/en/latest/
- Github Star : 15.8K
PySpider 是一种 Python 编写的强大 Web 爬虫。
它支持 JavaScript 网页,并具有分布式架构。
PySpider 支持将爬取数据存储在用户选定的后台数据库,包括 MySQL, MongoDB, Redis, SQLite, Elasticsearch 等。
支持开发人员使用 RabbitMQ、Beanstalk 和 Redis 等作为消息队列。
提供强大 Web 界面,具有脚本编辑器、任务监控、项目管理器和结果查看器。
支持对重度 Ajax 网站的爬取。
易于实现适用、快速的爬取。
EasySpider
- URL
- Intro
- EasySpider是一款集成了自动化测试、爬虫和数据采集功能的可视化工具。
- 它基于图形化界面,用户无需编写复杂的代码,通过简单的拖拽和配置即可实现数据的抓取和处理。
- 无论是进行网站自动化测试,还是对特定数据进行采集和分析,EasySpider都能够轻松应对。
- 同时,它还可以单独以命令行的方式进行执行,从而可以很方便的嵌入到其他系统中
-
Program Langua: JavaScript + Python
-
Github Star : 28.4K star / 3.3K fork
- 2024.07.02
Beautifulsoup
- Home URL : https://www.crummy.com/software/BeautifulSoup/
- Docs URL : https://www.crummy.com/software/BeautifulSoup/bs4/doc/
Beautiful Soup 一种设计用于实现 Web 爬取等快速数据获取项目的 Python 软件库。
它在设计上处于 HTML 或 XML 解析器之上,提供用于迭代、搜索和修改解析树等功能的 Python 操作原语。往往能为开发人员节省数小时乃至数天的工作。
Beautiful Soup 自动将输入文档转换为 Unicode 编码,并将输出文档转换为 UTF-8 编码。
Beautiful Soup 处于一些广为采用的 Python 解析器(例如,lxml 和 html5lib)之上,支持用户尝试使用多种不同的解析策略,并在速度和灵活性上做出权衡。
Selenium WebDriver
- 参见本文: Java - Selenium WebDriver
项目案例集
CASE1:requests/scrapy(一般网络请求) + selenium(动态渲染网页) + beautifulsoup4(网页内容解析)
- 参考文献
- 爬虫常用库
requests、selenium、puppeteer,beautifulsoup4、pyquery、pymysql、pymongo、redis、lxml和scrapy框架
其中发起请求课可以使用requests和scrapy
解析内容可以用 beautifulsoup4,lxml,pyquery
存储内容可以使用 mysql(清洗后的数据) redis(代理池) mongodb(未清洗的数据)
抓取动态渲染的内容可以使用:selenium,puppeteer
- 增量爬虫
一个网站,本来一共有10页,过段时间之后变成了100页。假设,已经爬取了前10页,为了增量爬取,我们现在只想爬取第11-100页。
因此,为了增量爬取,我们需要将前10页请求的指纹保存下来。以下命令是将内存中的set里指纹保存到本地硬盘的一种方式。
scrapy crawl somespider -s JOBDIR=crawls/somespider-1
但还有更常用的,是将scrapy中的指纹存在一个redis数据库中,这个操作已经有造好轮子了,即scrapy-redis库。
scrapy-redis库将指纹保存在了redis数据库中,是可以持久保存的。
(基于此,还可以实现分布式爬虫,那是另外一个用途了)scrapy-redis库不仅存储了已请求的指纹,还存储了带爬取的请求,这样无论这个爬虫如何重启,每次scrapy从redis中读取要爬取的队列,将爬取后的指纹存在redis中。
如果要爬取的页面的指纹在redis中就忽略,不在就爬取。
X 参考文献

本文链接: https://www.cnblogs.com/johnnyzen/p/17185119.html
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)