我想获得一些帮助,可以使用importxml / xpath从此链接获取NAV数据。 https://www.vanguardinvestments.com.au/retail/ret/investments/product.html#/fundDetail/wholesale/portId=8125/?prices ...因此在这种情况下,NAV数据为$ 1.3446。我想使用importxml / xpath获得此值。
该怎么做?我尝试了一些公式,但是..无法从网站上获取详细信息。
=(IMPORTXML("https://www.vanguardinvestments.com.au/retail/ret/investments/product.html#/fundDetail/wholesale/portId=8125/?prices","//td[@class='ng-binding']"))
答案 0 :(得分:0)
Ciao
我认为,获取价值的问题在于,如果您检查网页源代码[例如在Chrome right click -> View Page Source
中,该数字不能在那里直接使用
如this other answer中所述:
IMPORTXML无法检索由脚本填充的数据,因此 使用该公式从该表中检索数据是不可能的 做
这就是为什么如果尝试使用其元素xpath运行它的原因:
=IMPORTXML(A1,"//*[@id='tab-container']/div[2]/detail-prices-full/div/table[2]/tbody/tr[1]/td[2]")
您得到的内容为空
可以通过建议here进行测试,打开浏览器的开发人员工具并禁用JavaScript来确认通过脚本提供元素的事实。 in Chrome]
在不关闭开发人员工具的情况下,如果您在这种情况下重新加载网站,则会看到以下内容:
因此您将无法通过IMPORTXML
祝你有美好的一天,
安东尼诺
答案 1 :(得分:0)
ImportXML无法按照Antonino的说明进行。 但是您仍然可以在Google表格中获取此信息!
两种策略:
使用ImportJSON从页面在后台调用的API返回数据
使用ImportFromWeb代替ImportXML,它可以抓取Javascript呈现的内容
-
1。使用API
这是最好的解决方案,因为数据已经结构化并且 易于操作
我们可以通过搜索Chrome开发者工具的“网络”标签找到API调用。 这可能有点麻烦,但是一篇文章解释了逻辑: Don’t always scrape HTML, use website’s xhrRequests instead
我们正在寻找的URL是
https://api.vanguard.com/rs/gre/gra/1.7.0/datasets/auw-retail-prices-data-mf.jsonp?vars=portId:8125&path=[portId=8125][0]&callback=angular.callbacks._4
然后,我们需要使用此处提供的IMPORTJSON函数(每天5个免费请求) https://gsuite.google.com/marketplace/app/importjson_json_to_table_from_any_source/782573720506
激活后,我们只需致电
=IMPORTJSON("https://api.vanguard.com/rs/gre/gra/1.7.0/datasets/auw-retail-prices-data-mf.jsonp?vars=portId:8125&path=[portId=8125][0]")
2。抓取数据
IMPORTFROMWEB是IMPORTXML的改进版本,它接受加载Javascript的页面。
安装ImportFromWeb加载项: https://gsuite.google.com/marketplace/app/importfromweb_easy_web_scraping/278587576794
激活它并使用与IMPORTXML相同的功能,除了第3个参数应带有“ jsRendering”
=IMPORTFROMWEB(your_url, your_xpath, "jsRendering")