我需要找到一种方法来抓取我们公司的一个Web应用程序,并从中创建一个静态网站,可以刻录到CD并由旅行销售人员用来演示网站。后端数据存储分布在许多系统中,因此只需在销售人员的笔记本电脑上的VM上运行该站点就行不通。在一些客户(没有互联网,手机......原始,我知道),他们将无法访问互联网。
有没有人对爬行器有任何好的建议,可以处理链接清理,flash,一点ajax,css等等?我知道赔率很小,但在我开始编写自己的工具之前,我想我会把问题抛到这里。
5 个答案:
答案 0 :(得分:13)
使用WebCrawler,例如其中之一:
- DataparkSearch是根据GNU通用公共许可证发布的抓取工具和搜索引擎。
- GNU Wget是一个用C编写的命令行操作的爬虫,并在GPL下发布。它通常用于镜像Web和FTP站点。
- HTTrack使用网络抓取工具创建网站镜像以供离线查看。它是用C语言编写的,并在GPL下发布。
- ICDL Crawler是一个用C ++编写的跨平台网页爬虫,旨在使用计算机的免费CPU资源基于网站解析模板抓取网站。
- JSpider是一个高度可配置和可自定义的Web蜘蛛引擎,根据GPL发布。
- Larb by Sebastien Ailleret
- Andreto Beder的Webtools4larbin
- Methabot是一个速度优化的Web爬虫和命令行实用程序,用C语言编写,并在2条款BSD许可下发布。它具有广泛的配置系统,模块系统,并支持通过本地文件系统,HTTP或FTP进行有针对性的爬行。
- Jaeksoft WebSearch是一个基于Apache Lucene的网络爬虫和索引器构建。它是根据GPL v3许可证发布的。
- Nutch是一个用Java编写并在Apache许可下发布的爬虫程序。它可以与Lucene文本索引包一起使用。
- Pavuk是一个命令行Web镜像工具,带有可选的X11 GUI爬虫,并在GPL下发布。与wget和httrack相比,它具有许多高级功能,例如。基于正则表达式的过滤和文件创建规则。
- WebVac是斯坦福WebBase项目使用的爬虫。
- WebSPHINX(Miller和Bharat,1998)由实现多线程网页检索和HTML解析的Java类库以及用于设置起始URL,提取下载数据和实现基本的基于文本的搜索引擎。
- WIRE - Web信息检索环境[15]是一个用C ++编写并在GPL下发布的网络爬虫,包括几个用于安排页面下载的策略和一个用于生成下载页面上的报告和统计信息的模块,因此它已被使用用于网络表征。
- LWP :: RobotUA(Langheinrich,2004)是一个Perl类,用于实现在Perl 5许可下分发的行为良好的并行Web机器人。
- Web Crawler .NET的开源Web爬虫类(用C#编写)。
- Sherlock Holmes Sherlock Holmes在本地和网络上收集并索引文本数据(文本文件,网页......)。 Holmes由捷克门户网站Centrum赞助并商业使用。它也被Onet.pl。
使用
- YaCy,一个免费的分布式搜索引擎,建立在点对点网络的原则上(根据GPL许可)。
- Ruya Ruya是一款开源,高性能,广度优先,基于关卡的网络抓取工具。它用于以良好的方式抓取英语和日语网站。它是在GPL下发布的,完全用Python语言编写。 SingleDomainDelayCrawler实现遵循带有爬网延迟的robots.txt。
- Universal Information Crawler快速开发的网络抓取工具。抓取保存并分析数据。
- 代理内核爬网时用于调度,线程和存储管理的Java框架。
- 蜘蛛新闻,有关在perl中建造蜘蛛的信息。
- Arachnode.NET,是一个开源的混杂Web爬虫,用于下载,索引和存储Internet内容,包括电子邮件地址,文件,超链接,图像和网页。 Arachnode.net是使用SQL Server 2005用C#编写的,并在GPL下发布。
- dine是一个多线程Java HTTP客户端/爬虫程序,可以使用LGPL发布的JavaScript进行编程。
- Crawljax是一个基于方法的Ajax爬虫,该方法动态构建一个“状态流图”,用于对Ajax应用程序中的各种导航路径和状态进行建模。 Crawljax是用Java编写的,并在BSD许可下发布。
答案 1 :(得分:3)
wget或curl可以递归地跟随链接并镜像整个网站,因此这可能是一个不错的选择。您将无法使用网站的真正互动部分,如搜索引擎,或任何修改数据的内容,thoguh。
是否有可能创建可以从销售人员的笔记本电脑运行的虚拟后端服务,应用程序可以与之交互?
答案 2 :(得分:3)
因为没有人复制粘贴了一份工作指令......我正在努力......十年之后。 :d
wget --mirror --convert-links --adjust-extension --page-requisites \
--no-parent http://example.org
它对我来说就像一个魅力。
答案 3 :(得分:1)
如果没有将网络服务器刻录到CD上,你将无法处理AJAX请求之类的事情,我知道你已经说过这是不可能的。
wget将为您下载该网站(使用-r参数进行“递归”),但任何动态内容(如报告等)当然都无法正常工作,您只需获得一个快照
答案 4 :(得分:1)
如果您最终不得不从网络服务器上运行它,您可能需要查看:
ServerToGo
它允许您从CD运行WAMPP堆栈,完成mysql / php / apache支持。数据库在启动时被复制到当前用户临时目录,并且可以在用户不安装任何内容的情况下完全运行!