各位乡亲父老,欢迎大家来捧场!江湖卖艺,生活不易!技艺交流(投稿、打广告、链接交换),请搓这里

  数据采集-步骤及注意事项总结说明

2022/3/3 22:34:01管理员 1582
- N +
1.确定采集途径(来源)
          网页采集和api(网页,APP,小程序)采集,

          网页采集需要使用工具(正则,HTMLAgility,Xpath这些)将我们 需要的数据提取出来。

          要是api采集调用的话,一般回来直接就是json或XML等格式化数据了。

2.数据分析(提取)
        采集是个系统化的操作,一般都会是多层级的数据采集,举个最简单的采集例子,新闻采集:

        新闻分类 -> 分页新闻列表 -> 新闻详情

        这里通常是一层一层地去采集:先获取分类,再找出分页参数规律,获取分类里面的所有新闻列表及详情超链接,最后再请求详情链接得到新闻详情,最后再去下载图片视频等静态资源,每一步只做简单重复的步骤,保证每个采集单元都是简单的操作,而不是一条链状的操作。

3.写采集思路
        分析数据完了以后不要急着写采集代码,先写写思路,包括采集过程中可能会遇到的问题:访问限制(令牌、访问频率)、超时处理、错误处理 等等,先想好写下来。

3.数据实体类生成

      因为采集回来的数据是一串文本,不方便处理,需要转成结构化的数据,这里采用先采集样例数据回来,使用工具直接生成实体类,如这个工具:实体生成工具。

4.开始采集
      对于数据量比较大的采集,先采集一小部分数据回来检查一下数据的正确性,数据量小的就直接采集,确认没问题再去持久化,持久化时可以将原始采集数据保存下来,写每一级别的采集代码,每一级都如此,走通整个链确定代码逻辑没问题之后就可以真正开始采集了

5.采集异常中断处理(步骤验证数据正确性)
        采集过程中一般都会遇到一些中断的问题:原始数据错误导致了程序错误、网络超时,访问限制
        可以采用小步数据持久化,如每采集200条记录存一次,清空一下内存里面的数据,记录采集进度位置,继续采集,发生异常时可以做异常二次采集操作,像网络超时这种异常通过二次采集都是可以解决的,最后如果二次采集都不行的话,就要记录下来,最后去手动处理了。

6.静态资源下载
        由于静态资源具有任务执行时间长,受网络因素影响严重等特点,一般都会放到文本数据采集完了以后再去集中下载,此时任务就是简单的下载操作(新建文件夹,保存资源文件)。

7.采集模式优化(单线程,多线程,多进程)
        如果全程都是单线程执行任务的话,耗时会比较长,在采集目标站点访问频率允许的条件下,我们可以通过多线程或者多进程来加快采集速度,这里在多进程采集模式下,遇到了一个问题:当两个进程同时进行批量数据持久化的时候,会因为冲突导致其中一个进程挂掉,这里不知道是不是我的DBHelper的问题,
      暂时 还不清楚是怎么一回事,通过将数据持久化的粒度放大可以大程度地避免这种冲突的出现

8.优化建议
        1.采集是一个系统性的任务,需要先想明白再去做,减少推倒次数(思路推倒,代码推倒)      。

          2.在做数据持久化的时候如果使用的是数据库储存的方式,可以开启长连接或者生成批量操作语句
                一次执行,控制好语句长度,如果是采用参数化的方式,还需要注意Sqlserver 一次操作最多支持2000个参数

          3.获取图片时有些会是缩略图,这里需要尽可能找出获取大图的规律,或者去水印图片,有意识地去找,一般都能找到


9.特别说明
        采集数据(特别是文本)相对简单,使用对应工具按照要求格式下载数据即可,重点在数据的提取和数据的处理上需要注意的内容就比较多了。
        例如普通网站数据提取
        a.)因采集的数据html标签存在大小写问题,处理提取数据的时候如果没有对大小写字母进行忽略处理那么就有可能造成提取的数据不全或完全提取不到想要的数据(但同时存在一个问题,如果进行了数据转换大小写再对数据进行处理,特别是提取相应的下载资源可能因为转换了大小写而无法正常下载或获取正确的连接资源);
          b.)因采集来源的网站标签或属性使用的不标准(部分网站标签属性使用的双引号,部分网站标签属性使用的单引号,部分不规范网站标签属性使没有使用引号)等一系列问题造成数据提取不到或不正确的现象,也是需要预先处理[过滤掉或替换成统一的标准]再处理才不会存在问题;
          c.)对获取的下载资源如图片、音频、视频或其它数据的URL需要从对应的标签的属性里将URL完整的提取出来并对部份URL进行处理(URL只缺协议的、URL是完整的路径、URL是相对当前的路径、URL缺协议和主机的)不同的要进行不同的处理;
        d.)部份网站数据需要登陆或授权的还需要进行登陆或授权操作处理等;
        对于采集的几点个人建议:
        1.建议保存一个采集来源URL地址,方便对采集处理数据进行核对处理;
        2.如果有条件的情况下,文本数据不是很大的建议最好可以保存采集数据的副本,再校验数据处理和提取处理的时候可以直接对副本进行处理,避免长时间或重复的对网络数据进行请求,待处理和正确完成提取的情况下再进行正常的任务采集;
      3.初期采集最好进行人工数据审核校对,发现处理规则或数据异常的要及时停止后对数据处理和修正处理规则等;
0人赞 分享 二维码 赏一个
选择分享方式
移步手机端
文章手机二维码

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
选择打赏方式
微信赞助

打赏