爬虫数据采集技术趋势-智能化解析

爬虫工做内容css

互联网做为人类历史最大的知识仓库,是没有充分结构化的。目前互联网仅仅是一些文本等多媒体数据的聚合,内容虽然很是有价值,可是程序是没法使用那些没有结构化的数据。web

 

在2006年左右,有专家提出的web3.0,语义互联网,知识共享。虽然如今开放API,SOA概念愈来愈普及,真正语义上的互联网的时代彷佛还很是遥远。所以爬虫依然是最重要的手段,一端不断解析,聚合互联网上的数据,另一端向各类各样的的应用输送数据。正则表达式

 

现有爬虫开发技术存在问题算法

从招聘市场岗位需求能够看出,近年来对爬虫工程师需求愈来愈强烈。chrome

我的判断缘由有两个:服务器

  1. 信息聚合是互联网公司的基本需求。网络

  2. 数据时代到来,对数据更强烈的需求。框架

 

下面是我整理的部分靠爬虫聚合信息的创业公司,按照时间顺序排序:less

  • 搜索引擎聚合了网页:百度,google,机器学习

  • 机票比价网站:去哪儿,聚合各大航空公司票价

  • 团购平台:团800 聚合了团购网站信息。

  • 比价网站聚合了各大电商平台的商品价格:美丽说,蘑菇街,一淘

  • 记帐理财产品聚合和消费者,信用卡,银行卡信息:挖财和铜板街。

  • 新闻聚合平台:今日头条

  • p2p平台聚合各大p2p借贷公司的信息:网贷之家,融360

  • 风控公司须要收集企业公司,财务司法等信息:鹏元

  • 征信数据会收集了贷款者司法,社交,财务,大量和征信相关信息:聚信立,量化派,zestfinace

     

最后5种类型,几乎2014年都是开始。不少金融场景相关应用开始出现,这就对准确度和可靠性提出了更高的要求。但现有的爬虫开发技术可否知足高可靠,大规模,高效率开发需求呢?

 

从软件工程角度来看,一件事情若是没法评估,那就没法管理。爬虫开发常常是被吐槽的缘由之一,就是工做量经常没法评估。通常的软件项目的开发过程随着时间推动,工做量会逐渐减小,也是你们常常说的燃尽效果。

 

而爬虫开发生命周期以下图:

 

爬虫开发主要有两个方面内容:下载网页,解析网页。解析网页大概占据开发工做的80%左右。

 

下载网页功能的开发工做,会涉及IP限制,验证码等问题,这样问题都是能够预期的。同时,随着如今优秀的爬虫框架和云服务器的普及,问题解决起来会更轻松。

 

编写解析代码,虽然有一些基本工具chrome,firecdebug可使用,但始终须要人工分析,编写解析规则。不管是使用xpath,正则表达式,css selector,都不能减小这一部分的工做量。

 

大量重复性工做会致使如下两个问题:

  1. 即便同类型的网页看起来99%是同样,也须要编写独立的爬虫。这就会给人这样一种感受——爬虫开发大部分的工做内容是重复的。

  2. 数据源网页改版,几乎整个爬虫项目须要重作。重作的工做量几乎是100%,爬虫工程师心中每每是一万只羊驼跑过。如今不少征信数据采集公司的合做伙伴,当数据源网站改版,经常须要一至两天才能修复爬虫,很明显这种可靠性是没法知足金融场景须要。

 

智能化解析

这是一张新浪新闻的图片。

 

能够发现,视觉上很容易了解到,新闻所报道的事件的标题,发表时间和正文。天然也会想到,可否经过一些机器学习的算法达到自动解析的目的?这样就不用人工编写解析额,减小重复劳动。在2008年开始,就要研究机构发表了相关论文。

www.cs.cmu.edu/~deepay/mywww/papers/www08-segments.pdf

research.microsoft.com/en-us/um/people/znie/p048.special.nie.pdf

也就是在2008有一家相关的创业公司,在斯坦福大学孵化。

 

DiffBot智能化数据采集公司

总部位于加州的Diffbot成立于2008年,创始人Mike Tung,是斯坦福毕业研究生。Diffbot是经过人工智能技术,让“机器”识别网页内容,抓取关键内容,并输出软件能够直接识别的结构化数据。其创始人兼首席执行官Mike Tung表示,“Diffbot如今作的,至关于人类在浏览网页文章时所作的事情,找出页面中最核心的相关信息。”目前Diffbot已经发布了头版API和文章API,还有产品API。服务的客户包括三星、eBay、思科、美国在线等。

 

Diffbot的理念就是经过“视觉机器人”来扫描和识别不一样的网页类型(主要是非结构化的数据),再将这些丰富的数据源用于其余应用。Mike Tung表示:“咱们在获取页面以后会对其进行分析,而后经过成熟先进的技术进行结构化处理。”以前我提到的we structure the world's knowledge,就是该公司提出的理念。

 

Diffbot在基于智能采集的基础上,又开发出不少数据产品,好比知识图谱,智能商业BI。在2016腾讯与硅谷风投机构Felicis Ventures领投了人工智能创业公司Diffbot 1000万美圆的A轮融资,不少互联网巨头开始发现这家公司的价值。

 

算法实践

经过智能方式来解析网页须要两个步骤:

  1. 基于视觉上的网页分割,将网页分割几个视觉块。

  2. 经过机器学习训练的方式来判断各个视觉块的类型,是标题,仍是正文。其中主要流程和通常机器须要流程没什么区别。这就不详细解释。使用到使用的开源框架有:scikit-learn,phantomjs 

 

Scikit-Learn机器学习库已经很是成熟,很容易上手。

phantomjs,是一个headless webkit渲染引擎。作爬虫开发的同窗应该很是须要。

 

  1. 网页分割算法

    从Diffbot早期发布的文章来看,是经过图像处理的方式来切割视觉块。使用到的算法有,边界检查,文字识别等算法。但这种方式计算量偏大,复杂度很高。

    另一种实现方式是基于Dom树结构,导出所需的视觉特征。

     

    聚合时候需用的特征变量。主要考虑视觉相关的因素有元素在页面上的位置,宽度和高度,Dom的层次。

    有一点须要注意的是,如今网页不少是动态生成。须要借助phantomjs工具来进行动态网页渲染。

    聚类算法能够选用的DBSCAN,DBSCAN算法优势是更加密度来划分,比起K-mean算法的优势,是处理任意形状的聚合。

     

    具体的实现方式能够参考下面博文:http://blog.mapado.com/web-page-segmentation-by-visual-clustering/

     

  2. 分类算法

    在第一步处理后,网页上的标签,会被划分分若干类,须要判断标签的类型,是不是标题,正文,广告,导航之类。须要整理出相似下面的,训练矩阵。


整个学习过程与通常的机器学习训练过程没有区别。因为数据样本规模不大,分类算法基本算法采起。分类算法能够选用朴素贝叶斯,或者SVM。

 

总结和展望

 

本文介绍的方式比较粗略,通常来讲解析模型只能针对特定的网络训练解析模型,好比新闻,电商产品页。因此不一样类型的网页,所须要的特征变量有较大差异。针对不一样特色类型数据,须要你们本身花时间去探索和实践。

 

随着数据时代和智能化时代到来,爬虫做为重要的数据来源,自身须要一些技术提高来适应时代的要求,这也就对爬虫工程师提出更高的要求。成文粗陋,权且当作抛砖引玉,欢迎你们留言讨论。

相关文章
相关标签/搜索