Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 应用程序中抓取网站的最佳架构_Java_Spring_Hibernate_Architecture - Fatal编程技术网

Java 应用程序中抓取网站的最佳架构

Java 应用程序中抓取网站的最佳架构,java,spring,hibernate,architecture,Java,Spring,Hibernate,Architecture,我正在开发一个产品,在该产品中,我们需要一个功能来抓取用户给定的URL并发布其单独的移动站点。在爬网过程中,我们需要对网站内容、CSS、图像和脚本进行爬网。该产品用于执行更多活动,如安排一些营销活动等。我想问什么- 完成这项任务的最佳实践和开源框架是什么 我们应该在应用程序本身中执行此操作,还是应该有另一台服务器来执行此活动(如果此活动需要加载)?请记住,我们每个月有1个“缺乏”用户访问,从网站发布他的移动站点,以及大约1-2k个并发用户 该应用程序是在Java和Java EE平台中构建的,使用

我正在开发一个产品,在该产品中,我们需要一个功能来抓取用户给定的URL并发布其单独的移动站点。在爬网过程中,我们需要对网站内容、CSS、图像和脚本进行爬网。该产品用于执行更多活动,如安排一些营销活动等。我想问什么-

完成这项任务的最佳实践和开源框架是什么

我们应该在应用程序本身中执行此操作,还是应该有另一台服务器来执行此活动(如果此活动需要加载)?请记住,我们每个月有1个“缺乏”用户访问,从网站发布他的移动站点,以及大约1-2k个并发用户


该应用程序是在Java和Java EE平台中构建的,使用Spring和Hibernate作为服务器端技术。

我们使用Derkley DB Java edition来管理堆外链接队列以进行爬网,并区分等待下载的链接和尚未下载的链接

对于解析HTML,TagSoup是互联网上最好的选择

Batik是解析CSS和SVG的选择

PDFBox非常棒,可以从PDF中提取链接

Quartz scheduler是经Intury验证的事件调度选择

是的,您将需要一个或多个用于爬网的服务器,一个用于聚合结果和调度任务的服务器,以及另一个用于WEB前端和后端的服务器


这对我来说效果很好,我正在实施一个基于的爬行项目。我认为它确实是自动化无头浏览器的最佳Java框架。

Selenium还可以与其他可以控制外部真实世界浏览器的驱动程序实现一起使用,如Internet Exporer或Firefox,以确保与HTML、CSS和Javascript.Thanx jdevelop的最大兼容性。这正是我需要的解决方案。我在考虑不要在应用程序本身中处理html。还有一件事,数据将通过哪个协议从爬网服务器和后端服务器传输。我们使用spring框架。是否有任何可用的开源爬网服务器。@我不确定是否有开源项目,也许ApacheNutch会有所帮助。关于传输数据的问题,您可以考虑RMI,但是它有一些缺点,比如在整个请求的内存序列化中。我建议使用共享文件夹,通过FTP/SFTP访问。您下载内容,然后将其序列化到文件中(比如将大量复制查询放入Postgres以便快速导入),然后将其复制到服务器(FTP/SFTP)。在服务器上扫描文件夹,然后将数据导入Postgres。我们发现这是最快的解决方案。我们能这样做吗。将解析html存储在MongoDB中,并向后端服务器发送一些请求。根据请求(可能是某个id),后端服务器将搜索mongo db并处理数据。在500-1000个并发请求和mongo数据库优化方面,这种方法的效率有多高。