如何在PostgreSQL中使用XPath提取HTML的href属性值
正确实现方案
你之前的写法存在两个核心错误:
- 参数顺序错误:PostgreSQL的
xpath()函数第一个参数需要传入XPath表达式,第三个参数是命名空间映射专用参数,你把属性路径错放到了第三个参数的位置 - XPath表达式错误:
/href是匹配根节点下的href标签,不是属性,属性需要用@属性名的语法,且需要先定位到a标签节点
正确查询代码
SELECT (xpath('/a/@href', $$<a href='https://www.website1.ca/en/Section1/Section2/Section3/Section-4---Section5-R-Zone.pdf'>B4</a>$$::xml))[1]::text AS extracted_url;
代码说明
- 第一个参数传入XPath路径
/a/@href:表示匹配根节点下的a标签,提取其href属性值 - 第二个参数传入你的HTML内容,因为你的内容是纯净的合法a标签,直接转
xml类型即可 xpath()函数返回的是匹配结果的数组,当前场景只会匹配到1个结果,用[1]取数组第一个元素后转text类型,即可得到最终的链接字符串
如果是从表字段中提取,直接替换第二个参数为你的字段名即可,示例:
SELECT (xpath('/a/@href', 你的字段名::xml))[1]::text AS href_link FROM 你的表名;
内容的提问来源于stack exchange,提问作者user16573033
相关产品推荐
相关产品推荐

