暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

HTML相关处理器

NIFI实战 2020-12-20
210

背景

    jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

    nifi当然也集成了这个jsoup相关的处理器就是GetHTMLElement、ModifyHTMLElement、PutHTMLElement。

    GetHTMLElement处理器基本功能是,从上游的folwfile中拿html解析,然后通过css选择器获取元素,然后根据配置的Output Type类型,选择调用doc不同的api,从元素里边提取html、text、data、attribute值;HTML(ele.html())、Text(ele.text())、Attribute(ele.attr(配置的属性值))、Data(ele.data())。

    ModifyHTMLElement处理器基本功能是,从上游的folwfile中拿html解析,然后通过css选择器获取元素,然后根据配置的Output Type类型,选择调用doc不同的api,修改ellement元素的值。HTML(ele.html(modifiedValue))、Text(ele.text())、Attribute(ele.attr(配置的atrribute, 配置的属性修改后的值))

    PutHTMLElement处理器基本功能是,从上游的folwfile中拿html解析,然后通过css选择器获取元素,然后根据配置的Element Insert Location Type类型,选择调用doc不同的api,在ellement元素之前或者之后插入新增元素。append-html(ele.append(putValue))、prepend-html(ele.prepend(putValue))


必备技能Css选择器

详见:https://jsoup.org/apidocs/org/jsoup/select/Selector.html


常用如下

通配符
含义
例子
*所有元素
*
tag元素的标签名称(div元素)
div
#id元素属性id(div下的id为wrap和id为logo的元素)
div#wrap, #logo
.class元素属性的class(div下的class为left的元素)
div.left
[attr]属性匹配(带有href的标签a)
a[href]

总结

1.这些处理器是用来出来html的文档的,并不能直接从网络上爬取页面。

2.处理器的核心有两点jsoup解析html文档,css选择器筛选html文档元素。

附录一:GetHTMLElement

属性
含义
URL被解析的HTML页面的基本URL。当从HTML元素中提取属性值时,此URL将用于解析绝对URL。
CSS Selectorcss选择器用于提取元素
Output Type
  • HTML

  • Text

  • Attribute

  • Data

控制从HTML元素检索的DOM值的类型。
Destination
  • flowfile-attribute

  • flowfile-content

控制提取的元素是否写入为流文件属性或流文件内容。
Prepend Element Value将指定的值前置到结果元素的前面
Append Element Value向结果元素追加指定的值
Attribute Name当Output Type为HTML时,该值用作确定应该检索所选元素上的哪个属性的键。当Output Type为Attribute时,如果这个值带有'abs:'前缀,那么提取的属性值将使用指定的基URL转换为绝对URL形式。

附录二:ModifyHTMLElement

属性
含义
CSS Selectorcss选择器用于提取元素
HTML Character Encoding默认UTF-8

Character encoding of the input HTML

Output Type
  • HTML

  • Text

  • Attribute

控制从HTML元素写出的DOM值的类型。
Modified Value命中的元素要更新成的值
Attribute Name当Output Type为Attribute时,该值用作键值,以确定选定元素上的哪个属性将被修改为新值。

附录三:PutHTMLElement

属性
含义
CSS Selectorcss选择器用于提取元素
HTML Character Encoding默认UTF-8

Character encoding of the input HTML

Element Insert Location Type
  • append-html

  • prepend-html

控制新元素是前缀还是追加到CSS选择器所定位的元素的子元素。

例子

prepended 

原始:<b>Hi</b>

写入:<p>There</p>

结果:<p><b>Hi</b>There</p>

Appending 

原始:<b>Hi</b>

写入:<p>There</p>

结果:<p>There<b>Hi</b></p>






文章转载自NIFI实战,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论