您的位置:首页 > 新闻资讯 >文章内容
Java分布式爬虫如何爬取数据案例分享
来源:互联网 作者:admin 时间:2019-01-31 09:18:00

    除了Python可以做分布式爬虫外,Java也能做分布式爬虫,那么Java分布式爬虫容易吗?还需不需要使用代理IP来突破限制的呢?今天跟小编去了解下关于Java分布式爬虫如何爬取数据的问题,下面以Java分布式爬虫抓取电商商品信息为例:


    首先是我们的核心部分--爬虫程序。爬虫的过程为:从Redis数据仓库中取出URL,利用HttpClient进行下载,下载后的页面内容,我们使用HtmlCleaner和xPath进行页面解析,这时,我们解析的页面可能是商品的列表页面,也有可能是商品的详细页面。如果是商品列表页面,则需要解析出页面中的商品详细页面的URL,并放入Redis数据仓库,进行后期解析;如果是商品的详细页面,则存入我们的MySQL数据。具体的架构图如下:


Java分布式爬虫如何爬取数据案例分享


    当核心程序爬虫编写完后,为了加快页面抓取效率,我们需要对爬虫进行改进:一是对爬虫程序进行多线程改造;二是将爬虫部署到多台服务器,进一步加快爬虫的抓取效率。在实际生产环境中,由于刀片服务器的稳定性不太好,所以可能导致一些问题,例如:爬虫进程挂掉,这些问题有可能是经常出现的,所以我们需要对其进行监控,一旦发现爬虫进程挂了,立即启动脚本对爬虫进程进行重新启动,保证我们整个爬虫核心的持续性作业。这是就用到了我们的分布式协调服务ZooKeeper。我们可以另外写一个监控进程的程序用来实时监控爬虫的运行情况,原理是:爬虫在启动时,在ZooKeeper服务中注册一个自己的临时目录,监控程序利用ZooKeeper监控爬虫所注册的临时目录,利用ZooKeeper的性质--如果注册临时目录的程序挂掉后,这个临时目录过一会儿也会消失,利用这个性质,我们的监控程序监控爬虫所注册的临时目录,一旦发现临时目录消失,则说明改服务器上的爬虫进程已挂,于是我们需要启动脚本重新启动爬虫进程。随后我们将抓取得到的商品详细信息存储到我们的分布式MySQL数据库中。以下是整个爬虫项目的架构图:


Java分布式爬虫如何爬取数据案例分享


    1.Redis数据库——临时存储待抓取的URL


    Redis数据库是一个基于内存的Key-Value非关系型数据库。由于其读写速度极快,收到了人们的热捧(每秒10W左右的读写速度)。选用Redis数据库作临时数据存储正是基于此。为了使我们的爬虫优先抓取商品列表页面,我们在Redis中定义了两个队列(利用Redis的list的lpop和rpush模拟),分别是高优先级队列和低优先级队列,我们再高优先级队列中存储了商品列表页面,在低优先级队列存储了商品详细页面。这样我们就可以保证爬虫再进行抓取数据的时候,优先从高优先级队列取数据,从而使得爬虫优先抓取商品列表页面。为了很好地利用Redis数据库,我们编写了一个对于Redis的操作工具类。


    2.HttpClient——使用IP代理抓取数据


    为防止爬虫在频繁访问电商页面的行为被对方程序发现,爬虫程序一般在进行抓取数据的时候都是利用代理IP来抓取,以减少爬虫被电商发现的概率。我们可以使用一些网上的免费IP代理,如西刺代理,也可以花钱买一些IP进行代理下载电商页面。在使用代理进行页面下载时,可能出现连接超时,但这有可能是网络波动导致,也可能是代理IP失效。为了防止出现误判,我们在此做了三次尝试连接的机制代码,如果三次尝试失败,则认为这个IP失效。


    3.HtmlCleaner&xPath——对下载过来的页面进行解析


    解析页面是比较繁琐的任务,我们首先要确定需要解析的对象,然后再利用浏览器提供的xPath工具,copy xpath,然后再根据这个xpath解析出需要的东西。


    4.MySQL数据库——存储商品详细信息


    在操作MySQL数据库这一块,我们也是写了一个数据库操作工具类,使用了Apache数据库连接池DBCP,这个算是比较简单的,配置了DBCP的配置文件后就可以很好地使用了。


    5.ZooKeeper:分布式协调工具,用于后期监控各个爬虫的运行状态


    上文详细的介绍了关于Java分布式爬虫如何爬取数据,在进行抓取的时候,需要注意控制速度,并使用代理IP,比如机灵代理,以突破IP限制,合理的提高采集速度。


相关文章内容简介
推荐阅读
  • 18 2019-04
    封禁IP无差别反爬,但换个IP还是可以突破的

    封禁IP无差别反爬,但换个IP还是可以突破的,就是这么简单,这也就是为什么爬虫都需要使用代理IP的原因。

  • 21 2019-10
    代理IP帮助微信公众号涨粉

    新媒体运营一个新账号,第一个要做的就是要实现涨粉,毕竟没有粉丝,就没有阅读量的保障。如果在微信公众号高速吸粉,下面我们看看具体要怎么做。

  • 16 2019-10
    手机要怎么更换IP?

    现在手机的功能非常强大了,很多的工作都可以借助手机就可以完成,从pc端到移动端,我们的工作生活正在进行改变。那么,对于从事网络营销的人员,手机IP地址的切换就变得非常必要了。

  • 14 2019-05
    专业的代理IP具有质量保障

    专业的代理IP具有质量保障,在电子商务这个竞争激烈的行业,价格从不同地点到国家变化很大。在这个没有边界与限制的网络环境中,我们如何跟上价格趋势并保持竞争力?

  • 17 2019-05
    微商营销需要使用IP代理吗?

    微商营销需要使用IP代理吗?对于很多个人经营的微商来说,他们通常会通过在贴吧发帖的方式来运营自己的软营销。但即使是偶尔使用过贴吧的用户都知道,百度对于发帖的要求是非常严格的

  • 17 2019-04
    爬取不到数据,原因可能不在于代理IP,而是...

    爬取不到数据,原因可能不在于代理IP,而是其他方面的问题,不能一遇到这些问题,就说是代理IP的问题,不是什么锅都能算到这头上的。比如被限制的代码:

在线咨询
大客户经理
大客户经理
1829380381
13316264505

大客户经理微信

微信公众号

微信公众号

回到顶部