提取HTML内容
从 HTML(一定程度上也支持 XML)里按 XPath 取出文本、属性或表格。内部用 HtmlAgilityPack,深入用法见其 文档。
当前模块定义
sys:htmlExtract输入 9 · 输出 3 · 枚举 4
输入参数
- 操作类型
operationEnum必填提取文本内容默认extractText提取表格内容extractTable - 源HTML
sourceText必填原始HTML内容,或网址,或根节点对象
- 网页编码类型
encodingText可选通过网址加载内容时,使用指定的编码。留空时默认为UTF8。
自动检测 (加载两次autoGB2312编码gb2312UTF8编码utf-8 - 节点XPath
xpathText必填内容的XPath,详细说明请参考文档
- 提取方式
selectTargetEnum可选提取单个节点还是符合条件的所有节点。
第一个符合条件的节点默认single所有符合条件的节点all - 提取内容类型
returnTypeEnum可选要提取的节点信息。
5 个选项innerHtml 内部HTML、innerText 内部文本、outerHTML 节点全部HTML
innerHtml 内部HTML默认InnerHtmlinnerText 内部文本InnerTextouterHTML 节点全部HTMLOuterHtmlAttribute 节点的某个属性Attribute节点对象Node - 属性名称
attributeText可选仅在提取节点属性时有效。指定属性的名称。
- 写入工作表对象
writeToSheetObject可选将提取到的表格内容写入工作表对象中。
- 失败后停止动作
stopIfFailBoolean可选失败后是否停止动作
输出参数
- 步骤执行是否成功
isSuccessBoolean步骤执行是否成功
- 提取值
valueAny提取的内容。请确保结果类型和变量类型匹配。
- 根节点
rootNodeAny整个HTML源内容对应的HtmlNode节点对象,可用于后续处理使用。
概述
源可以是 HTML 文本,也可以是 http / https 网址(模块会先下载)。同一网址短时间内多次提取会走缓存;更新很勤的页面请先用 HTTP请求 再提取,避免拿到旧数据。
提取HTML内容
从HTML代码中提取内容
参数说明
操作类型:
- 提取文本内容:按 XPath 取节点。
- 提取表格内容:取表格,可写入工作表对象。
源HTML:HTML 代码、网址,或根节点对象。
网页编码类型:按网址下载时的编码。留空默认 UTF-8;选 自动检测 (加载两次) 会先探测编码再重新请求。乱码时改这里。
节点XPath:例如网页标题 html/head/title。找不到节点时,试把标签名改成小写。
提取方式:第一个符合条件的节点,或所有符合条件的节点(结果是列表)。
提取内容类型:
| 提取内容类型 | 说明 |
|---|---|
| innerHtml 内部HTML | 节点内部的 HTML |
| innerText 内部文本 | 节点内部的纯文本 |
| outerHTML 节点全部HTML | 含节点自身的 HTML |
| Attribute 节点的某个属性 | 再填 属性名称 |
| 节点对象 | 返回 HtmlNode |
属性名称:仅提取内容类型为属性时有效。
写入工作表对象:提取表格时,把结果写入工作表。旧稿未写。
失败后停止动作:失败是否中止动作。默认开启。
输出
- 步骤执行是否成功
- 提取值:单个值或列表,变量类型要匹配。
- 根节点:整份源对应的 HtmlNode,可交给下一步再提取。旧稿未写。
示例动作
步骤较多,用卡片打开后查看。
限制与排障
- 短时间重复拉同一网址会命中缓存。
- XPath 大小写不对时经常取不到节点。
- 编码不对会乱码:试
auto、gb2312或utf-8。
XPath 教程:W3School、知乎笔记。在线测试:xpather.com。
相关链接
更新历史
- 1.4.17 开始提供。
- 20230704 增加支持 XML,以及使用小写 XPath 的说明。
更新于