作者: suger
查看: 1013|回复: 0
打印 上一主题 下一主题

[讨论] 爬虫入门基础-智能解析

[复制链接]
跳转到指定楼层
楼主
suger 发表于 2020-5-15 17:43:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
查看: 1013|回复: 0
对于解析来说,常用的解析方法其实无非那么几种,正则、XPath、CSS Selector,另外对于某些接口,常见的可能就是 JSON、XML 类型,使用对应的库进行处理即​可,这些规则和解析方法其实写起来是很繁琐的,如果我们要爬上万个网站,如果每个网站都去写对应的规则,那么不就太累了吗?所以智能解析便是一个需求。
什么是爬虫的智能化解析呢?顾名思义就是自动解析页面,不在慢慢一个网站一个网站的写解析规则,我们可以利用一些算法来计算出来页面上的特定元素的位置和样式。但是智能化解析是非常难的一项任务,比​如你给别人看一个网页的一篇文章,人可以迅速获取到这篇文章的标题是什么,发布时间是什么,正文是哪一块,或者哪一块是广告位,哪一块是导航栏等内容。可是把把文章拿给机器来识别呢?,它面临仅仅是一系列的 HTML 代码而已。那么机器是是融合了那些方面的信息来做到智能化提取的呢?这些信息包括标题​、正文、
时间、广告等。
  • 标题、一般它的字号是比较大的,而且长度不长,位置一般都在页面上方,而且大部分情况下它应该和 title 标签里的内容是一致的。
  • 正文、它的内容一般是最多的,而且会包含多个段落  或者图片标签,另外它的宽度一般可能会占用到页面的三分之二区域,并且密度会比较大。
  • 时间、不同语言的页面可能不同,但时间的格式是有限的,如 2019-02-20 或者 2019/02/20 等等,也有的可能是美式的记法,顺序不同,这些也有特定的模式可以识别。
  • 广告、它的标签一般可能会带有 ads 这样的字样,另外大多数可能会处于文章底部、页面侧栏,并可能包含一些特定的外链内容。
另外还有一些特点就不再一一赘述了,这其中包含了区块位置、​区块大小、区块标签、区块内容、区块疏密度等等多种特征,另外很多情况下还需要借助于视觉的特征,所以说这里面其实结合了算法计算、视觉处理、自然语言处理等各个方面的内容。如果能把这些特征综合运用起来,再经过大量的数据训练,是可以得到一个非常不错的效果的。
例如下图,这是 Safari 中自带的阅读模式自动解析的结果
对于智能解析,下面分为四个方法进行了划分:
  • readability 算法,这个算法定义了不同区块的不同标注集合,通过权重计算来得到最可能的区块位置。
  • 疏密度判断,计算单位个数区块内的平均文本内容长度,根据疏密程度来大致区分。
  • Scrapyly 自学习,是 Scrapy 开发的组件,指定⻚页⾯面和提取结果样例例,其可⾃自学习提取规则,提取其他同类⻚页⾯面。
  • 深度学习,使⽤用深度学习来对解析位置进⾏行行有监督学习,需要⼤大量量标注数据。
如果能够容忍一定的错误率,可以使用智能解析来大大节省时间。
本文介绍的内容比较粗略,一般来说解析模型只能针对特定的网络训练解析模型,比如新闻,电商产品页。所以不同类型的网页,所需要的特征变量有较大差别。针对不同特点类型数据,需要大家自己花时间去探索和实践。
随着数据时代和智能化时代到来,爬虫作为重要的数据来源,自身需要一些技术提升来适应时代的要求,这也就对爬虫工程师提出更高的要求。成文粗陋,权且当做抛砖引玉,欢迎大家留言讨论。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播
回复 论坛版权

使用道具 举报

您需要登录后才可以回帖 登录 | 加入CSkin博客

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|CSkin ( 粤ICP备13070794号

Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.  Designed by ARTERY.cn
GMT+8, 2024-11-22 12:34, Processed in 0.531955 second(s), 32 queries , Gzip On.

快速回复 返回顶部 返回列表