[工具/软件] 开源通用网络爬虫框架

目录

0 概述

通用万能爬虫 vs 聚焦领域爬虫

1 Java Spider

spider-flow

spider-flow 是一个爬虫平台,以图形化方式定义爬虫流程,无需代码即可实现一个爬虫

  • Github Star : 7.7K

20230306
https://github.com/ssssssss-team/spider-flow

Webmagic

WebMagic是一个简单灵活的Java爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。

特性:
  简单的API,可快速上手
  模块化的结构,可轻松扩展
  提供多线程和分布式支持
  • Github URL : 10.7K

20230306
https://github.com/code4craft/webmagic

Heritrix 3

  • Home URL : heritrix.readthedocs.io/

Heritrix 是一个开源,可扩展的 web 爬虫项目。用户可以使用它来从网上抓取想要的资源。Heritrix 设计成严格按照 robots.txt 文件的排除指示和 META robots 标签。其最出色之处在于它良好的可扩展性,方便用户实现自己的抓取逻辑。

  • Github Star : 2.4K

20230306
https://github.com/internetarchive/heritrix3

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

【简介】
Scrapy 是一种高速的高层 Web 爬取和 Web 采集框架,可用于爬取网站页面,并从页面中抽取结构化数据。
Scrapy 的用途广泛,适用于从数据挖掘、监控到自动化测试。
Scrapy 设计上考虑了从网站抽取特定的信息,它支持使用 CSS 选择器和 XPath 表达式,使开发人员可以聚焦于实现数据抽取。
对于熟悉 Python 的开发人员,只需几分钟就能建立并运行 Scrapy。
支持运行在 Linux、Mac OS 和 Windows 系统上。

【特性】
内置支持从 HTML 和 XML 抽取数据、使用扩展的 CSS 选择器(Selector)和 XPath 表达式等特性。
支持以多种格式(JSON、CSV、XML)生成输出。
基于 Twisted 构建。
稳健的支持,自动检测编码方式。
快速,功能强大。

PySpider

https://github.com/binux/pyspider

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

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 参考文献

posted @   千千寰宇  阅读(616)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示