搜寻器数据采集技术的趋势-智能分析
优采云 发布时间: 2020-08-05 20:05注意: 本文于6月29日在公司的官方帐户上发布.
我觉得写作很好. 转载到这里存档.
--------------------------------------------------- -------------------------------------------------- -----
用一句话概括履带工程师的工作内容是“我们构建世界的知识”.
搜寻器的工作内容
作为人类历史上最大的知识仓库,互联网还没有完全结构化. 目前,Internet只是一些多媒体数据(例如文本)的集合. 尽管内容非常有价值,但该程序无法使用非结构化数据.
2006年,一些专家提出了web3.0,语义Internet和知识共享的建议. 尽管API现在已经开放并且SOA的概念变得越来越流行,但真正的语义Internet时代似乎还很遥远. 因此,爬虫仍然是最重要的手段. 一端持续分析和聚合Internet上的数据,另一端将数据发送到各种应用程序.
现有爬虫开发技术存在问题
从招聘市场的工作需求可以看出,近年来对履带工程师的需求变得越来越强.
个人判断有两个原因:
信息聚合是互联网公司的基本要求.
数据时代来临,对数据的需求也越来越强.
以下是我由搜寻器编译的一些初创公司,用于汇总信息(按时间顺序排列):
最后5种类型大约在2014年开始出*敏*感*词*融场景相关的应用程序开始出现,这对准确性和可靠性提出了更高的要求. 但是现有的履带开发技术是否可以满足高可靠性,*敏*感*词*,高效率的开发需求?
从软件工程的角度来看,如果无法评估某些内容,则无法对其进行管理. 爬虫的发展通常是被抱怨的原因之一,因为工作量通常无法评估. 随着通用软件项目开发过程的进行,工作量将逐渐减少,这也是每个人经常说的倦怠效应.
爬虫的开发生命周期如下:
爬网程序开发有两个主要方面: 下载网页和解析网页. 解析网页可能约占开发工作的80%.
下载网页功能的开发工作将涉及IP限制,验证码和其他问题,因此可以预期到这些问题. 同时,随着出色的搜寻器框架和云服务器的普及,该问题将更易于解决.
编写分析代码. 尽管可以使用chrome和firecdebug一些基本工具,但始终需要手动分析来编写分析规则. 无论是使用xpath,正则表达式还是CSS选择器,都无法减少这部分工作量.
许多重复的工作可能导致以下两个问题:
即使相同类型的页面看起来有99%相同,您也需要编写一个单独的搜寻器. 这会让人们感到,爬虫开发的大部分工作都是重复的.
数据源网页已被修改,几乎整个爬虫项目都需要重做. 重做工作量几乎是100%. 在履带工程师的脑海中,经常有10,000只羊驼经过. 如今,对于信用数据采集公司的许多合作伙伴而言,在修改数据源网站时,通常需要一到两天的时间来修复爬虫. 显然,这种可靠性无法满足财务方案的需求.
智能分析
这是新浪新闻的图片.
可以发现,从视觉上很容易理解新闻中报道的事件的标题,出版时间和文本. 当然,我也会考虑是否可以通过某些机器学习算法来实现自动分析的目的?这样,无需手动编写分析量并减少重复工作. 从2008年开始,研究机构发表了相关论文.
〜deepay / mywww / papers / www08-segments.pdf
/en-us/um/people/znie/p048.special.nie.pdf
也就是说,在2008年,有一家相关的创业公司在斯坦福大学孵化.
DiffBot智能数据采集公司
Diffbot总部位于加利福尼亚州,成立于2008年. 其创始人Mike Tung是斯坦福大学的*敏*感*词*. Diffbot使用人工智能技术允许“机器”识别Web内容,获取关键内容并输出可以由软件直接识别的结构化数据. 它的创始人兼首席执行官董建华说: “ Diffbot现在正在做的事情等同于人类在浏览Web文章以查找页面上最相关的信息时所做的事情. ”目前,Diffbot已发布了其首页API和Article API,以及产品API. 服务的客户包括三星,eBay,思科,美国在线等.
Diffbot的概念是通过“可视机器人”扫描和识别不同类型的网页(主要是非结构化数据),然后将这些丰富的数据源用于其他应用程序. 董建华说: “我们将在获取页面后对其进行分析,然后通过成熟和先进的技术对其进行结构化. ”我们构建了我前面提到的世界知识,即公司的概念.
Diffbot已经开发了许多基于智能集合的数据产品,例如知识图和智能业务BI. 2016年,硅谷风投公司腾讯和Felicis Ventures牵头,启动了AI初创公司Diffbot的1000万美元A轮融资,许多互联网巨头开始发现这家公司的价值.
算法练习
以聪明的方式解析网页需要两个步骤:
基于可视网页细分,将网页分为几个可视块.
使用机器学习训练来确定每个视觉块的类型,无论是标题还是文本. 主过程和一般机器过程之间没有区别. 这将不详细解释. 使用的开源框架是: scikit-learn,phantomjs
Scikit-Learn机器学习库非常成熟并且易于使用.
phantomjs,是一个无头的Webkit渲染引擎. 应该非常需要进行爬虫开发的学生.
网页细分算法
在Diffbot早期发表的文章中,视觉块是通过图像处理切入的. 使用的算法包括边界检查,文本识别和其他算法. 但是,该方法计算量大,复杂度高.
另一种实现方法是基于Dom树结构来导出所需的视觉特征.
聚集所需的功能变量. 与视觉相关的主要因素是页面上元素的位置,宽度和高度以及Dom的水平.
要注意的一件事是,许多网页现在是动态生成的. 需要使用phantomjs工具进行动态网页渲染.
聚类算法可以使用DBSCAN. DBSCAN算法的优点是可以更密集地划分它. 与K-mean算法相比,它可以处理任意形状的聚合.
有关具体的实现方法,请参阅以下博客文章:
分类算法
在第一步处理之后,网页上的标签将分为几类. 必须确定标签的类型,是否是标题,正文,广告,导航等. 需要类似于以下内容整理训练矩阵.
整个学习过程与一般机器学习训练过程没有什么不同. 由于数据样本量小,因此采用基本分类算法. 分类算法可以使用朴素贝叶斯或SVM.
概述和展望
本文介绍的方法相对粗糙. 一般而言,只能针对特定的网络分析模型(例如新闻和电子商务产品页面)训练分析模型. 因此,不同类型的网页需要不同的功能变量. 对于不同的特征数据类型,您需要花时间探索和练习.
随着数据和智能时代的到来,爬虫作为重要的数据源,需要进行一些技术改进以适应时代的要求,这对爬虫工程师提出了更高的要求. 文字粗俗,正确,并以此为起点,欢迎大家留言讨论.
----------