什么是爬虫的智能化解析呢?顾名思义就是自动解析页面,不在慢慢一个网站一个网站的写解析规则,我们可以利用一些算法来计算出来页面上的特定元素的位置和样式。

前面我做过一个爬取小说网站的爬虫,平常我写的爬虫的话,要根据不同的网站,编写不同的提取规则,才能提取出想要的内容。而如果使用智能化解析的话,不论是那个网站,你只需要把网页的url传递给他,就可以通过算法智能识别出标题,内容,更新时间等信息,而不需要重复编写提取规则。
     这方面的算法服务的话,diffbot应该算是目前做的最好的了,这家公司一直致力于页面解析,解析的准确度也很高。但可惜的是他们的算法并不开源,所以我们只能使用他们公司的服务。
这些理论都可以百度,我还是直接上一个示例吧。

注册账号

首先我们使用Diffbot的服务的话要先注册一个账号,它有15天的免费使用期。
Diffbot官网

在如图所示位置,需要填写你的邮箱,注册后它会向邮箱中发送一个token,每次调用Diffbot的服务的时候都需要这个服务凭证。点击后面的按钮后会跳到这个页面

在这里只需要根据要求把它带*号的内容填写完整就行了,然后点击下面蓝色的按钮,它会有一个机器人验证(貌似要搭梯子打开才会出现验证),验证通过了再点一次就注册成功了。
登录上之后先来尝试一下它的测试功能吧。

测试页面

打开测试页面:https://www.diffbot.com/dev/home/
例如我抓取一个小说页面,得到的结果是这样:
看到没有,小说章节的标题,和内容都解析出来了。而在这过程中,我并没有写任何的解析代码。

Diffbot API

刚刚在网页上的解析只是提供给你测试用的,那么我们在python代码中应该怎样使用呢?看下面代码:

import requests, json
# api调用地址
url = 'https://api.diffbot.com/v3/article'# 传递的参数
params = {'token': '8173ecdcb07374d33e34ab803a06719d', # Developer Token,注册成功后会发送到你的邮箱'url': 'https://www.booktxt.com/0_24/107339.html', # 爬取的目标网页的url'fields': 'meta' # 可选参数,制定返回的字段
}
# 使用get方式请求,返回解析后的内容
response = requests.get(url, params=params)
# 打印解析出来的内容
print(response.json())

返回的结果:

{'request': {'pageUrl': 'https://www.booktxt.com/0_24/107339.html','api': 'article','fields': 'meta','version': 3},'objects': [{'breadcrumb': [{'link': 'https://www.booktxt.com/','name': '顶点小说'},{'link': 'https://www.booktxt.com/xuanhuan/', 'name': '玄幻小说'},{'link': 'https://www.booktxt.com/0_24/', 'name': '圣墟'}],'humanLanguage': 'zh','meta': {'description': '顶点小说提供圣墟(辰东)第一章 沙漠中的彼岸花在线阅读,所有小说均免费阅读,努力打造最干净的阅读环境,24小时不间断更新,请大家告诉更多的小说迷。','keywords': '第一章 沙漠中的彼岸花,辰东,圣墟','title': '圣墟_辰东_第一章 沙漠中的彼岸花 - 顶点小说'},'diffbotUri': 'article|3|-982846652','siteName': 'booktxt.com','pageUrl': 'https://www.booktxt.com/0_24/107339.html','html': '<p>大漠孤烟直,长河落日圆。</p>\n<p>一望无垠的大漠,空旷而高远,壮阔而雄浑,当红日西坠,地平线尽头一片殷红,磅礴中亦有种苍凉感。</p>\n<p>上古的烽烟早已在岁月中逝去,黄河古道虽然几经变迁,但依旧在。</p>\n<p>楚风一个人在旅行,很疲惫,他躺在黄沙上,看着血色的夕阳,不知道还要多久才能离开这片大漠。</p>\n<p>数日前他毕业了,同时也跟校园中的女神说再见,或许见不到了吧,毕竟他曾被委婉的告知,从此天各一方,该分手了。</p>\n<p>离开学院后,他便出来旅行。</p>\n<p>落日很红,挂在大漠的尽头,在空旷中有一种宁静的美。</p>\n<p>楚风坐起来喝了一些水,感觉精力恢复了不少,他的身体属于修长强健那一类型,体质非常好,疲惫渐消退。</p>\n<p>站起来眺望,他觉得快要离开大漠了,再走一段路程或许就会见到牧民的帐篷,他决定继续前行。</p>\n<p>一路西进,他在大漠中留下一串很长、很远的脚印。</p>\n<p>无声无息,竟起雾了,这在沙漠中非常罕见。</p>\n<p>楚风惊讶,而这雾竟然是蓝色的,在这深秋季节给人一种凉意。</p>\n<p>不知不觉间,雾霭渐重,蓝色缭绕,朦朦胧胧,笼罩了这片沙漠。</p>\n<p>大漠尽头,落日都显得有些诡异了,渐渐化成一轮蓝日,有种魔性的美,而火云也被染成了蓝色。</p>\n<p>楚风皱眉,虽然他知道,沙漠的天气最是多变,但眼前实在不太正常。</p>\n<p>一片寂静,他停下脚步。</p>\n<p>在进大漠前,他曾听当地的老牧民讲过,一个人走在沙漠中,有时会听到一些古怪的声音,会见到一些奇异的东西,要格外谨慎。</p>\n<p>当时他并未在意。</p>\n<p>依旧宁静,沙漠中除却多了一层朦胧的蓝雾,并没有其他变故发生,楚风加快脚步,他想尽快离开这里。</p>\n<p>大漠的尽头,落日蓝的妖异,染蓝了西部的天空,不过它终究快要消失在地平线上了。</p>\n<p>楚风的速度越来越快,开始奔跑,他不想呆在这种诡异、充满不确定性的地方。</p>\n<p>在沙漠中,海市蜃楼那样的奇景多发生在烈日当空下,眼下不相符,这不像是什么蜃景。</p>\n<p>突然,前面传来轻响,像是有什么东西破沙而出,而且声音很密集,此起彼伏。</p>\n<p>楚风倏地停下脚步,盯着沙漠,前方地面蓝光星星点点,像是散落一地蓝钻,晶莹透亮,在落日的余晖中闪耀着。</p>\n<p>那是一棵又一棵嫩苗,不足一寸高,自沙漠中破土而出,带着美丽的光泽,剔透而妖异,遍地皆是。</p>\n<p>短暂的停滞,随后沙沙声成片,蓝色灿灿,所有嫩苗都快速拔高,一瞬间生长起来。</p>\n<p>天边,蓝日下沉,即将消失,雾气弥漫,浩瀚的大漠如同披上了一层诡异的蓝色薄纱。</p>\n<p>&ldquo;啵!&rdquo;</p>\n<p>花朵绽放的声音传出,沙漠中一片湛蓝,在夕阳即将消失的刹那,这些植物开始绽放出成片的花朵。</p>\n<p>大量的蓝花,晶莹点点,犹若梦幻,有些醉人,遍开在沙漠中,非常不真实。</p>\n<p>这种植物一尺多高,通体如蓝珊瑚般透亮,花瓣一条条,妖艳而迷人,宛若盛放在另一片国度,带着魔性,吸引人的心神。</p>\n<p>楚风退后一步,然而,身后也已满是这种植物,蓝光流动,一眼望不到边。</p>\n<p>他很吃惊,仔细的看着,努力辨认,这像极了彼岸花,一条条花瓣展开,又向后弯曲,极其美丽。</p>\n<p>不过,彼岸花红的鲜艳,而它却是蓝色的,从未听闻有蓝色彼岸花。</p>\n<p>彼岸花真实存在,带着浓烈的宗教色彩,关于它有太多的传说,但楚风不信这些,只为眼前的景象而惊。</p>\n<p>沙漠干燥、缺水,只有极其稀少的耐旱植物偶尔可见,零星散落着。而彼岸花喜欢阴森、潮湿的环境,无论如何也不该在这里出现,还如此的妖艳。</p>\n<p>这里遍地都是,一眼望不到尽头。</p>\n<p>大漠浩瀚,薄雾染蓝了落日,浸透了天边,而整片空旷无垠的沙漠都生出蓝色的彼岸花,说不出的奇异、神秘!</p>\n<p>一缕淡淡的芬芳飘漾,让人沉迷。</p>\n<p>楚风用力摇头,小心的迈步,避开这些花,他发现只有一个地带没有这种植物,那就是&mdash;&mdash;&mdash;黄河古道。</p>\n<p>在岁月中多次变迁,几经改道,它贯穿这片大漠,如今已近干涸,蓝色彼岸花开遍两岸,拥簇着它。</p>\n<p>花开两岸,彼此遥见。</p>\n<p>终于,太阳沉下去了,而也正是在此时,这些植物盛放,花开到极致,化作蓝色的海洋,流光溢彩。</p>\n<p>虽然暮色降临,但这里蓝色光泽缭绕,极致炫目,艳丽的出奇。</p>\n<p>楚风站在黄河古道上,心中无法宁静,但是他却不作停留,沿河道快速前进。</p>\n<p>天色渐暗,最后的落日余晖也已不见了。</p>\n<p>蓝色的大漠光彩点点,而后突然间,砰然一声,所有蓝色彼岸花怒放后,竟然在一瞬间同时凋零。</p>\n<p>妖艳的花瓣枯萎,接着整株的植物开始干枯,它们失去色彩,耗尽生机,迅速发黄,而后碎裂,像是在一瞬间失去了数十年。</p>\n<p>&ldquo;砰!&rdquo;</p>\n<p>最后的刹那,遍地干枯的蓝色彼岸花寸寸断裂,化成了粉末。</p>\n<p>这诡异的景象,很难解释。</p>\n<p>它们如同烟花般,短暂的绚烂,美丽到极致,而后便凋零,成为灰烬。</p>\n<p>枯黄的粉末落在沙地间,在暮色中很难辨出,而此时蓝雾也早已消失,大漠恢复了原样,像是什么都不曾发生过,再次宁静。</p>\n<p>楚风没有驻足,大步前行,在暮色中,他翻过许多座沙丘,终于见到了地平线上的山影,要离开大漠了。</p>\n<p>天色渐黑,他终于走出来了,清晰的看到了山地,也隐约间看到了山脚下牧民的帐篷。</p>\n<p>再回头时,身后大漠浩瀚,很寂静,跟平日没什么两样。</p>\n<p>山地前方,灯火摇曳,离山脚下还较远时就听到了一些嘈杂声,那里不平静,像是有什么事情正在发生。</p>\n<p>此外,还有牛羊等牲畜惶恐的叫声,以及藏獒沉闷的低吼声。</p>\n<p>有异常之事吗?楚风加快脚步,赶到山脚下,临近牧民的栖居地。</p>','text': '大漠孤烟直,长河落日圆。\n一望无垠的大漠,空旷而高远,壮阔而雄浑,当红日西坠,地平线尽头一片殷红,磅礴中亦有种苍凉感。\n上古的烽烟早已在岁月中逝去,黄河古道虽然几经变迁,但依旧在。\n楚风一个人在旅行,很疲惫,他躺在黄沙上,看着血色的夕阳,不知道还要多久才能离开这片大漠。\n数日前他毕业了,同时也跟校园中的女神说再见,或许见不到了吧,毕竟他曾被委婉的告知,从此天各一方,该分手了。\n离开学院后,他便出来旅行。\n落日很红,挂在大漠的尽头,在空旷中有一种宁静的美。\n楚风坐起来喝了一些水,感觉精力恢复了不少,他的身体属于修长强健那一类型,体质非常好,疲惫渐消退。\n站起来眺望,他觉得快要离开大漠了,再走一段路程或许就会见到牧民的帐篷,他决定继续前行。\n一路西进,他在大漠中留下一串很长、很远的脚印。\n无声无息,竟起雾了,这在沙漠中非常罕见。\n楚风惊讶,而这雾竟然是蓝色的,在这深秋季节给人一种凉意。\n不知不觉间,雾霭渐重,蓝色缭绕,朦朦胧胧,笼罩了这片沙漠。\n大漠尽头,落日都显得有些诡异了,渐渐化成一轮蓝日,有种魔性的美,而火云也被染成了蓝色。\n楚风皱眉,虽然他知道,沙漠的天气最是多变,但眼前实在不太正常。\n一片寂静,他停下脚步。\n在进大漠前,他曾听当地的老牧民讲过,一个人走在沙漠中,有时会听到一些古怪的声音,会见到一些奇异的东西,要格外谨慎。\n当时他并未在意。\n依旧宁静,沙漠中除却多了一层朦胧的蓝雾,并没有其他变故发生,楚风加快脚步,他想尽快离开这里。\n大漠的尽头,落日蓝的妖异,染蓝了西部的天空,不过它终究快要消失在地平线上了。\n楚风的速度越来越快,开始奔跑,他不想呆在这种诡异、充满不确定性的地方。\n在沙漠中,海市蜃楼那样的奇景多发生在烈日当空下,眼下不相符,这不像是什么蜃景。\n突然,前面传来轻响,像是有什么东西破沙而出,而且声音很密集,此起彼伏。\n楚风倏地停下脚步,盯着沙漠,前方地面蓝光星星点点,像是散落一地蓝钻,晶莹透亮,在落日的余晖中闪耀着。\n那是一棵又一棵嫩苗,不足一寸高,自沙漠中破土而出,带着美丽的光泽,剔透而妖异,遍地皆是。\n短暂的停滞,随后沙沙声成片,蓝色灿灿,所有嫩苗都快速拔高,一瞬间生长起来。\n天边,蓝日下沉,即将消失,雾气弥漫,浩瀚的大漠如同披上了一层诡异的蓝色薄纱。\n“啵!”\n花朵绽放的声音传出,沙漠中一片湛蓝,在夕阳即将消失的刹那,这些植物开始绽放出成片的花朵。\n大量的蓝花,晶莹点点,犹若梦幻,有些醉人,遍开在沙漠中,非常不真实。\n这种植物一尺多高,通体如蓝珊瑚般透亮,花瓣一条条,妖艳而迷人,宛若盛放在另一片国度,带着魔性,吸引人的心神。\n楚风退后一步,然而,身后也已满是这种植物,蓝光流动,一眼望不到边。\n他很吃惊,仔细的看着,努力辨认,这像极了彼岸花,一条条花瓣展开,又向后弯曲,极其美丽。\n不过,彼岸花红的鲜艳,而它却是蓝色的,从未听闻有蓝色彼岸花。\n彼岸花真实存在,带着浓烈的宗教色彩,关于它有太多的传说,但楚风不信这些,只为眼前的景象而惊。\n沙漠干燥、缺水,只有极其稀少的耐旱植物偶尔可见,零星散落着。而彼岸花喜欢阴森、潮湿的环境,无论如何也不该在这里出现,还如此的妖艳。\n这里遍地都是,一眼望不到尽头。\n大漠浩瀚,薄雾染蓝了落日,浸透了天边,而整片空旷无垠的沙漠都生出蓝色的彼岸花,说不出的奇异、神秘!\n一缕淡淡的芬芳飘漾,让人沉迷。\n楚风用力摇头,小心的迈步,避开这些花,他发现只有一个地带没有这种植物,那就是———黄河古道。\n在岁月中多次变迁,几经改道,它贯穿这片大漠,如今已近干涸,蓝色彼岸花开遍两岸,拥簇着它。\n花开两岸,彼此遥见。\n终于,太阳沉下去了,而也正是在此时,这些植物盛放,花开到极致,化作蓝色的海洋,流光溢彩。\n虽然暮色降临,但这里蓝色光泽缭绕,极致炫目,艳丽的出奇。\n楚风站在黄河古道上,心中无法宁静,但是他却不作停留,沿河道快速前进。\n天色渐暗,最后的落日余晖也已不见了。\n蓝色的大漠光彩点点,而后突然间,砰然一声,所有蓝色彼岸花怒放后,竟然在一瞬间同时凋零。\n妖艳的花瓣枯萎,接着整株的植物开始干枯,它们失去色彩,耗尽生机,迅速发黄,而后碎裂,像是在一瞬间失去了数十年。\n“砰!”\n最后的刹那,遍地干枯的蓝色彼岸花寸寸断裂,化成了粉末。\n这诡异的景象,很难解释。\n它们如同烟花般,短暂的绚烂,美丽到极致,而后便凋零,成为灰烬。\n枯黄的粉末落在沙地间,在暮色中很难辨出,而此时蓝雾也早已消失,大漠恢复了原样,像是什么都不曾发生过,再次宁静。\n楚风没有驻足,大步前行,在暮色中,他翻过许多座沙丘,终于见到了地平线上的山影,要离开大漠了。\n天色渐黑,他终于走出来了,清晰的看到了山地,也隐约间看到了山脚下牧民的帐篷。\n再回头时,身后大漠浩瀚,很寂静,跟平日没什么两样。\n山地前方,灯火摇曳,离山脚下还较远时就听到了一些嘈杂声,那里不平静,像是有什么事情正在发生。\n此外,还有牛羊等牲畜惶恐的叫声,以及藏獒沉闷的低吼声。\n有异常之事吗?楚风加快脚步,赶到山脚下,临近牧民的栖居地。','type': 'article','title': '第一章 沙漠中的彼岸花'}]}

以上就是我们调用API后返回的解析内容,是不是把文章标题,内容,还有跟新时间都准确的解析出来了。
关于更多操作可以查看官方的API文档(https://www.diffbot.com/dev/docs/article/)
这里列举几个常用的可选参数:

  • fields: 用来制定返回那些字段,默认已经有了一些固定字段,还可以制定额外返回那些可选字段。
  • paging:如果是多页文章,将这个参数设置为Fasle则可以禁止多页内容拼接。
  • maxTags: 可以设置返回的Tag最大数,默认是10个。
  • tagConfidence: 设置置信度的阈值,超过这个值的tag才会被返回,默认是0.5.
  • discussion: 如果将这个参数设置为False,那么就不会解析评论的内容。
  • timeout: 解析最大时间,默认是30秒。
  • callback: 为JSONP类型的请求而设计的回调。
    关于fields字段,专门列举一下里面的参数:
    首先是一些固定字段
  • type: 文本的类型,这里就是article。
  • title: 文章的标题。
  • text: 文章的纯文本内容,如果有分段内容,就会以换行符来表示。
  • html: 提取结果的html内容
  • data: 文章的发布时间,其格式为PFC1123
  • estimateDate: 如果日期时间不太明确,就会返回一个预估时间,如果文章超过两天或者没有发布如期,那么这个字段就不会返回。
  • author: 作者。
  • authorUrl: 作者链接。
  • discussion: 评论内容。
  • humanLanguage: 语言类型。
  • numPage: 如果文章是多页的,这个参数会控制最大的翻页拼接数目。
  • nextPages: 如果文章是多页的,这个参数可以指定文章的后续链接。
  • siteName: 站点名称。
  • publisherRegion: 文章的发布地区。
  • publisherCountry: 文章的发布国家。
  • pageUrl: 文章的链接。
  • resolvedPageUrl: 如果文章是从pageUrl重定向过来的,则返回此内容。
  • tags:文章的标签或者文章包含的实体,根据自然语言处理技术和DBpedia计算生成,是一个列表,里面又包含了子字段:
  • label: 标签名。
  • count:标签出现的次数。
  • score: 标签的置信度。
  • rdfTypes:如果实体可以由多个资源表示,那么则返回相关的URL。
  • type: 类型。
  • uri:Diffbot Knowledge Graph中的实体链接。
  • images: 文章中包含的图片。
  • videos: 文章中包含的视屏。
  • breadcrumb: 面包屑导航信息。
  • diffbotUrl: Diffbot内部的URL链接。
    扩展的可选字段
  • quotes: 引用信息。
  • sentiment: 文章的情感值,-1到1之间。
  • links:所有超链接的顶级链接。
  • querystring: 请求的参数列表。
    搬运过程可能出错,准确内容参照官方的api文档!

另外Diffbot还提供了几乎所有语言的SDK,其实本质上就是调用了requests库。这里就不介绍了,下面附上链接:https://github.com/diffbot/diffbot-python-client
这个库并没有发布到pypi上,需要自己下载并导入才能用,有兴趣的可以下载来看一下。

@快乐是一切

爬虫的智能化解析之使用Diffbot自动解析页面相关推荐

  1. ddns 动态解析 - 阿里云api自动解析家用服务器动态ip

    2019独角兽企业重金招聘Python工程师标准>>> 过年回老家办了带宽,大家都知道家用带宽是没有固定ip的一般使用花生壳之类的动态解析域名: 但是花生壳现在不好用,我使用阿里云a ...

  2. Python爬虫的智能化解析——Diffbot

    爬虫是做什么的?是帮助我们来快速获取有效信息的.然而做过爬虫的人都知道,解析是个麻烦事. 比如一篇新闻吧,链接是这个:https://news.ifeng.com/c/7kQcQG2peWU,页面预览 ...

  3. 还在一个个写规则?来了解下爬虫的智能化解析吧!

    爬虫是做什么的?是帮助我们来快速获取有效信息的.然而做过爬虫的人都知道,解析是个麻烦事. 比如一篇新闻吧,链接是这个:https://news.ifeng.com/c/7kQcQG2peWU,页面预览 ...

  4. 自研!东鸽用 Go 语言写了一个能够自动解析新闻网页的算法

    这是「进击的Coder」的第 593 篇技术分享 作者:韦世东 来源:NightTeam " 阅读本文大概需要 8 分钟. " 输入网页文本(不需要输入 xpath),自动结构化输 ...

  5. SpringBoot 自动解析参数:HandlerMethodArgumentResolver

    HandlerMethodArgumentResolver 是SpringBoot 中的一个接口,也是Spring 面向切面的编程的一种提现,这个接口我们从名称上大概能了解其中的意思:操作方法参数解析 ...

  6. asp自动解析网页中的图片地址,并将其保存到本地服务器

    程序实现功能:自动将远程页面的文件中的图片下载到本地. 程序代码 <% '将本文保存为 save2local.asp '测试:save2local.asp?url=http://ent.sina ...

  7. tns03505 无法解析名称_SpringBootWeb源码解析SpringMVC自动配置

    SpringMVC自动配置 在 Spring Boot 中引入了 spring-boot-starter-web 依赖,并完成了 DispatcherServlet 的自动配置之后,便会通过 WebM ...

  8. 第三百二十六节,web爬虫,scrapy模块,解决重复ur——自动递归url

    第三百二十六节,web爬虫,scrapy模块,解决重复url--自动递归url 一般抓取过的url不重复抓取,那么就需要记录url,判断当前URL如果在记录里说明已经抓取过了,如果不存在说明没抓取过 ...

  9. 前端模拟自动解析手机号姓名地址

    前端模拟自动解析手机号姓名地址 // An highlighted block //自动识别事件autoDiscern: function (e) {const name = e // 传入的内容// ...

最新文章

  1. python编写程序的一般步骤-Python编写win程序的操作流程
  2. hibenate.hbm2ddl.auto属性详解
  3. Java的二十三种设计模式(适配器模式(Adapter)、对象的适配器模式)
  4. POJ 3233 Matrix Power Series (矩阵分块,递推)
  5. ffmpeg分析系列
  6. 当医学影像遇见深度学习,MIDL 2020 论文征稿
  7. java character类
  8. 如何入门单片机C语言
  9. python100内的质数_python输出100以内的质数与合数实例代码
  10. Linux 查看显卡型号
  11. 2021年PAT乙级春季真题
  12. c语言中结构体中默认值,C Struct中的缺省值
  13. 000webhost – 1500M支持PHP可绑米免费虚拟主机
  14. 手机浏览器 css3,css3在不同型号手机浏览器上的兼容一览表
  15. Google Play 下载 apk
  16. Deployer 使用问题
  17. 安卓逆向小案例——阿里系某电影票务APP加密参数还原-Unidbg篇
  18. python中异常处理-安装包失败
  19. Galera-MariaDB多主集群搭建
  20. python中的无穷大

热门文章

  1. 林纳斯·托瓦兹 Linus Torvalds
  2. 魔兽世界如何攻打纳克萨玛斯电男?
  3. [刷题]leetcode\278_第一个错误的版本
  4. JavaScript:使用Canvas绘图
  5. Photoshop cs6 如何让图层渐变透明
  6. 瓦力发布系统安装部署
  7. 哈工大 软件构造Lab1的设计实现
  8. linux火狐弹出框乱码,Linux系统下火狐浏览器页面出现乱码怎么办?
  9. 【2021】网络协议从入门到底层原理-MJ【新】附上下载链接
  10. K-means聚类最优k值的选取