我试图从网站Sporcle (特别是从其中一个徽章中获得的日期)中获取一些数据,但是我从F12->右击元素-->Copy->Copy XPath得到的XPath似乎无法使用google命令IMPORTXML;我所得到的只是#N/A。
=IMPORTXML("https://www.sporcle.com/user/Jimmy/badges/earned/","//*[@id='badge-container']/div[1]/div[3]")
发布于 2020-06-16 05:11:57
网站使用动态渲染。所以,经典的方法行不通。我认为有三种方法可以做到:
IMPORTXML
:我们从脚本元素中检索JSON数据,并使用公式解析它。IMPORTXML
+ImportJSON脚本:我们从脚本元素中检索JSON数据,并使用脚本解析它(更干净)。解决方案1 :
产出:
首先,我们在A1
中使用IMPORTXML
提取JSON数据,并使用以下公式:
=IMPORTXML(B1;"substring-before(substring-after(//*[contains(text(),'badge_limiter')],'var badgeList = [{'),'}]')")
然后,我们使用多个公式的组合来解析数据。在J2
中,我们写道:
=QUERY(ARRAYFORMULA(SPLIT(TRANSPOSE(SPLIT(SUBSTITUE(SUBSTITUE(SUBSTITUE(REGEXREPLACE(M1;"(""\w+?_\w+?"":)";"");""",";""";");"""";"");"},";"");"{"));";"));"select Col1,Col6")
解决方案2 :
产出:
首先,我们在A1
中使用IMPORTXML
提取JSON数据,并使用以下公式:
=IMPORTXML(B1;"substring-before(substring-after(//*[contains(text(),'badge_limiter')],'var badgeList = '),'}]')")&"}]"
然后我们用脚本解析数据。F1
中使用的公式是:
=ImportJSONFromSheet("Feuille 15";"/badge_name,/earned_date")
其中Feuille 15
是我正在处理的工作表的名称。其余的是选择感兴趣的列。
解决方案3 :
产出:
用于徽章名称和日期的XPath:
//td[@class='left-align link-col col-width-1']
//td[@class="col-width-3"]
然后在B5
中传递公式
=IMPORTFROMWEB(C1;C2:D2;B3:C3)
注意:一定要将jsRendering
设置为TRUE
。
附带注意:我的总部设在欧洲,所以您可能需要在公式中用;
替换,
。
https://stackoverflow.com/questions/62399693
复制相似问题