开源java单机爬虫框架简介,优缺点分析

     2022-04-19     574

关键词:

互联网营销时代,获取海量数据成为营销推广的关键。而获得数据的最佳方式就是利用爬虫去抓取。但是爬虫的使用少不了代理ip太阳HTTP的支撑。当然网络上现在有很多开源爬虫,大大方便了大家使用。但是开源网络爬虫也是有优点也有缺点,清晰认知这一点才能达成自己的目标。
对于爬虫的功能来说。用户比较关心的问题往往是:
1)爬虫可以爬取ajax信息么?
网页上有一些异步加载的数据,爬取这些数据有两种方法:使用模拟浏览器(问题1中描述过了),或者分析ajax的http请求,自己生成ajax请求的url,获取返回的数据。如果是自己生成ajax请求,使用开源爬虫的意义在哪里?其实是要用开源爬虫的线程池和URL管理功能(比如断点爬取)。
如果我已经可以生成我所需要的ajax请求(列表),如何用这些爬虫来对这些请求进行爬取?
爬虫往往都是设计成广度遍历或者深度遍历的模式,去遍历静态或者动态页面。爬取ajax信息属于deep web(深网)的范畴,虽然大多数爬虫都不直接支持。但是也可以通过一些方法来完成。比如WebCollector使用广度遍历来遍历网站。爬虫的第一轮爬取就是爬取种子集合(seeds)中的所有url。简单来说,就是将生成的ajax请求作为种子,放入爬虫。用爬虫对这些种子,进行深度为1的广度遍历(默认就是广度遍历)。
2)爬虫支持多线程么、爬虫能用代理么、爬虫会爬取重复数据么、爬虫能爬取JS生成的信息么?
能不能爬js生成的信息和爬虫本身没有太大关系。爬虫主要是负责遍历网站和下载页面。爬js生成的信息和网页信息抽取模块有关,往往需要通过模拟浏览器(htmlunit,selenium)来完成。这些模拟浏览器,往往需要耗费很多的时间来处理一个页面。所以一种策略就是,使用这些爬虫来遍历网站,遇到需要解析的页面,就将网页的相关信息提交给模拟浏览器,来完成JS生成信息的抽取。
3)爬虫怎么保存网页的信息?
有一些爬虫,自带一个模块负责持久化。比如webmagic,有一个模块叫pipeline。通过简单地配置,可以将爬虫抽取到的信息,持久化到文件、数据库等。还有一些爬虫,并没有直接给用户提供数据持久化的模块。比如crawler4j和webcollector。让用户自己在网页处理模块中添加提交数据库的操作。至于使用pipeline这种模块好不好,就和操作数据库使用ORM好不好这个问题类似,取决于你的业务。
4)爬虫怎么爬取要登陆的网站?
这些开源爬虫都支持在爬取时指定cookies,模拟登陆主要是靠cookies。至于cookies怎么获取,不是爬虫管的事情。你可以手动获取、用http请求模拟登陆或者用模拟浏览器自动登陆获取cookie。
5)爬虫怎么抽取网页的信息?
开源爬虫一般都会集成网页抽取工具。主要支持两种规范:CSS SELECTOR和XPATH。至于哪个好,这里不评价。
6)明明代码写对了,爬不到数据,是不是爬虫有问题,换个爬虫能解决么?
如果代码写对了,又爬不到数据,换其他爬虫也是一样爬不到。遇到这种情况,要么是网站把你封了,要么是你爬的数据是javascript生成的。爬不到数据通过换爬虫是不能解决的。
7)哪个爬虫的设计模式和构架比较好?
设计模式对软件开发没有指导性作用。用设计模式来设计爬虫,只会使得爬虫的设计更加臃肿。
至于构架,开源爬虫目前主要是细节的数据结构的设计,比如爬取线程池、任务队列,这些大家都能控制好。
8)哪个爬虫可以判断网站是否爬完、那个爬虫可以根据主题进行爬取?
爬虫无法判断网站是否爬完,只能尽可能覆盖。
至于根据主题爬取,爬虫之后把内容爬下来才知道是什么主题。所以一般都是整个爬下来,然后再去筛选内容。如果嫌爬的太泛,可以通过限制URL正则等方式,来缩小一下范围。
9)爬虫速度怎么样?
单机开源爬虫的速度,基本都可以讲本机的网速用到极限。爬虫的速度慢,往往是因为用户把线程数开少了、网速慢,或者在数据持久化时,和数据库的交互速度慢。而这些东西,往往都是用户的机器和二次开发的代码决定的。
10)网页可以调用爬虫么?
爬虫的调用是在Web的服务端调用的,平时怎么用就怎么用,这些爬虫都可以使用。
11)爬虫被网站封了怎么办?
爬虫被网站封了,一般用多代理(随机代理)就可以解决。但是这些开源爬虫一般没有直接支持随机代理ip的切换。

怎么样使用python的scrapy爬虫框架

...虽然有一套插件机制,而且作为亮点宣传。可以看到一些开源的Nutch插件,提供精抽取的 查看详情

java常用类库以及简介,具体使用细节进行百度(爬虫爬取的数据)

来至于互联网Office文档的Java处理包POI[推荐]ApachePOI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。目前POI已经有了Ruby版本。结构:HSSF-提供读写MicrosoftExcelXL...Java常用工具包Jodd[推荐]Jodd是一个开源的Java工具集... 查看详情

开源的网络爬虫以及一些简介和比较

转 目前网络上开源的网络爬虫以及一些简介和比较目前网络上有不少开源的网络爬虫可供我们使用,爬虫里面做的最好的肯定是google,不过google公布的蜘蛛是很早的一个版本,下面是几种开源的网络爬虫的简单对比表:下面... 查看详情

现在python爬虫用scrapy框架多吗?我安了好多次都安不上

...虽然有一套插件机制,而且作为亮点宣传。可以看到一些开源的Nutch插件,提供精抽取的 查看详情

开源爬虫框架哪家强?是骡子是马,拉出来溜溜就知道了!

ProjectLanguageStarWatchForkNutchJava1111195808webmagicJava42166182306WebCollectorJava1222255958heritrix3Java773141428crawler4jJava18312421136PyspiderPython85816872273ScrapyPython1964214055261看到了吗?星星数 查看详情

java爬虫框架调研

...架)。除了Python,Java中也有许多爬虫框架。nutchapache下的开源爬虫程序,功能丰富,文档完整。有数据抓取解析以及存储的模块heritrix比较成熟地址:internetarchive/heritrix3·GitHub很早就有了,经历过很多次更新,使用的人比较多,... 查看详情

牛逼!“京东热”框架jd-hotkey开源了...单机qps可达37万!!

JD-hotkey是京东APP后台热数据探测框架,历经多次高压压测和2020年京东618大促考验。在上线运行的这段时间内,每天探测的key数量数十亿计,精准捕获了大量爬虫、刷子用户,另准确探测大量热门商品并毫秒级推送... 查看详情

ssh开源框架的优缺点

  js+servlet+javabean的开发模式需要写很多的重复代码,比如固定的doGet()方法,而且它的控制跳转不灵活,往往一个问题处理需要两个.java文件,而且当采用MVC模式开发时有很大的耦合度,对于后期的维护相当不变。它的好处是... 查看详情

c#爬虫爬虫的多线程如何实现

...虽然有一套插件机制,而且作为亮点宣传。可以看到一些开源的Nutch插件,提供精抽取的功能。但是 查看详情

爬虫框架之scrapy(代码片段)

...、setitings.py十三、获取亚马逊商品信息一、介绍Scrapy一个开源和协作的框架,其最初是为了页面抓取(更确切来说,网络抓取)所设计的, 查看详情

数据分析⚠️走进数据分析2⚠️爬虫简介(代码片段)

【数据分析】⚠️走进数据分析2⚠️爬虫简介概述爬虫爬取网页设置超时时间处理网络异常概述数据分析(DataAnalyze)可以在工作中的各个方面帮助我们.本专栏为量化交易专栏下的子专栏,主要讲解一些数据分析的基础知识.爬虫爬... 查看详情

hadoo简介

1.什么是hadoop?  简单的说就是开源框架.hadoop不是数据库,但是hadoop有数据库,有nosql数据库。apache的开源项目,主要用于做分布式、可靠性的、稳定的计算框架。 解决的问题:  海量数据的存储(HDFS)  海量数据的分析(MapR... 查看详情

开发网络爬虫应该如何选择爬虫框架?

...p;  1.分布式爬虫:Nutch     2.JAVA单机爬虫:Crawler4j、WebMagic、We 查看详情

爬虫之scrapy框架(代码片段)

一scrapy框架简介1介绍Scrapy一个开源和协作的框架,其最初是为了页面抓取(更确切来说,网络抓取)所设计的,使用它可以以快速、简单、可扩展的方式从网站中提取所需的数据。但目前Scrapy的用途十分广泛,可用于如数据挖掘、... 查看详情

spring框架ioc容器和aop解析

主要分析点:一、Spring开源框架的简介 二、Spring下IOC容器和DI(依赖注入Dependencyinjection)三、Spring下面向切面编程(AOP)和事务管理配置  一、Spring开源框架的简介   Spring是一个开源框架,Spring是于2003年兴起的一个... 查看详情

手把手教你写网络爬虫:开源爬虫框架对比

...指南!封面:  介绍大家好!我们从今天开始学习开源爬虫框架Scrapy,如果你看过《手把手》系列的前两篇,那么今天的内容就非常容易理解了。细心的读者也许会有疑问,为什么不学出身名门的Apache顶级项目Nutch,或者... 查看详情

无码爬虫,真香

将开源小分队设为星标 精品文章第一时间读大家好,我是爱撸码的开源大叔。之前和大家分享过java爬虫框架Jsoup,可还是要敲代码才能爬取东西,运营产品还是没法直接用,时不时来找大叔我爬些数据做分析ÿ... 查看详情

disruptor源码分析

...谬误请留言指正 0. 什么是Disruptor?Disruptor是一个开源的并发框架,提供了类似于Java中有界队列的功能,主要用于生产消费者场景。与Java原生并发队列不同的是,Disruptor高度优化,在单机上可以轻松跑到千万级别的 查看详情