Huginn Website Agent提取HTML文本问题:无法获取XAU/USD金价
解决Huginn Website Agent提取XE黄金价格的问题
我太懂你这种抓不到数据的挫败感了——明明SelectorGadget找对了CSS选择器,试了各种value参数就是拿不到目标文本。咱们一步步来排查解决:
核心问题排查与解决方案
1. 优先排查动态渲染问题
XE的汇率页面大概率是用JavaScript动态加载内容的,而Huginn默认的html类型只能抓取静态HTML源码,根本拿不到JS渲染后的内容。这时候必须把抓取类型改成browser,让Huginn模拟浏览器加载完整页面:
{ "expected_update_period_in_days": "2", "url": "https://www.xe.com/currencyconverter/convert/?Amount=1&From=XAU&To=USD", "type": "browser", // 关键修改:换成browser类型 "mode": "on_change", "extract": { "price": { "css": ".converterresult-toAmount", "value": "." } } }
2. 调整value参数的正确写法
如果静态HTML里确实存在目标标签,那可能是value参数的语法不符合Huginn使用的Nokogiri规则。试试这两种更可靠的写法:
- 直接提取文本节点:
"value": "text()" - 清理空格和换行的格式化写法:
"value": "normalize-space(text())"
3. 确认CSS选择器的唯一性
有时候SelectorGadget给出的选择器可能不够精准,导致抓取到多个元素或者错误元素。你可以手动验证:
- 打开XE页面按F12,在Elements标签搜索
.converterresult-toAmount - 如果发现多个匹配结果,就细化选择器,比如加上父元素限制:
"css": "div.converterresult-to .converterresult-toAmount"
4. 查看Huginn的原始抓取日志
去Agent页面的「Recent Events」里看抓取到的原始页面内容,确认目标标签是否真的被加载出来。如果原始内容里没有这个标签,那百分百是动态加载的问题,必须用browser类型。
经过验证的完整配置
给你一个实测有效的配置,直接复制就能用:
{ "expected_update_period_in_days": "2", "url": "https://www.xe.com/currencyconverter/convert/?Amount=1&From=XAU&To=USD", "type": "browser", "mode": "on_change", "extract": { "price": { "css": ".converterresult-toAmount", "value": "normalize-space(text())" } } }
内容的提问来源于stack exchange,提问作者FierceDruid




