java 实现 爬断点续爬数据导出多个解析结果文件,将多个解析后的结果txt文件的text数据,整合到一个新的txt文件中的服务,支持高并发执行,和非并发的顺序

515 阅读3分钟

1.介绍

java 实现 自定义 log 开启 io 创建文件 将文本内容,写入 文本中 ,累加写入 最后关闭 爬虫服务方便记录数据,放服务挂掉和对方限制ip,导致的中端,意外停止也无妨,数据正常记录保存

的文章后续 结合使用

上片介绍的是 网络爬虫服务 断点换IP续爬 ,将结果及时写入到文件中  的服务

这篇是将上篇多个文件,整合到一个文件中。便于使用

 

2.并发爬虫思路 1.并发爬虫性能速度很高 2.需要考虑对方服务器是否扛得住如此并发操作  3.如果把对方服务器搞垮了,就不便于爬取了,所以对对方服务器也要友好一些  4.对对方服务器友好后,爬取就可以方便的爬取了,  5.但友好后爬取的速度就会下降,这时候就可以采用另一种策略来平均速度了  6.可以采用并发5到10个服务  7.每个服务执行总任务的一部分  8.如 1到1000,1001 到2000 ,2001到3000 以此类推  9.代理服务器及时换ip  10.数据及时爬取及时入库,或本地文件  11.防止服务挂掉没地方放,或服务出现对方服务器开始限制限流,导致的无法继续访问,  12.这时候跑后面的任务,也没啥意义,返回的都不能用,必须要要停下来,修改ip等参数  13.继续跑服务  14.当然这是针对超大数据爬取做的,如果数据没上几万几十万几百万,没啥必要做并发  15.一个服务慢慢跑,再加上延迟等待,对对方服务器好点,还是不错的  16.加上有些代理服务器换ip是需要时间的,这时候如果因为修改ip导致的服务部分数据没获取到  17.这样就得不偿失了,所以数据稳定全部爬取到,不如到个一个阈值,进行更换ip停下服务更换ip  18.继续爬取,这样最好。又稳,又准棒棒哒  19.换ip的时候尽量选择一些距离自己城市近的ip,这样网络请求快  20.因为网络传输的时候,国内网络距离远远跳的路由就会越多,加上网线传播距离也是一个原因  21.所以选择近的ip也是并发中一个总要的因素  

3.效果图 3.1原多个txt文件

0.png

3.2整合到一个文件中,并发非顺序的,和顺序非并发服务

1.png

4.代码 4.1依赖

2.png

4.2工具类中方法,用来获取文件夹下所有文件名

3.png

5.3并发非顺序服务

4.png

4.4,非并发 顺序执行服务

5.png

6.png

5.代码介绍 俩套代码 一套是非顺序的将多个文件并发执行迁移写入到文件中 另一套是顺序的每个文件执行完,在执行下一个文件写入任务 更具业务需求使用,如果需要考虑数据顺序不乱,就时运顺序的方式 如果业务需要,速度快,不考虑顺序是否顺,就选择并发服务