xpath
  • import
  • google-spreadsheet
  • 2016-03-01 52 views 0 likes 
    0

    我试图在Google电子表格中使用ImportXML并得到NA结果。错误信息:用于Gsheet中ImportXML的XPath

    导入XML内容不能被解析
    网址:http://www.tripadvisor.com/Hotel_Review-g293916-d309884-Reviews-Indra_Regent_Hotel-Bangkok.html

    这是我有:

    importxml(url, "//img[@class='sprite-rating_rr_fill rating_rr_fill rr35']/@content") 
    

    这就是我想要抓住什么: the content attribute value of img

    我期待您的建议。我不确定我做错了什么。

    +0

    听起来像你正尝试在格式不正确的html上使用xml解析器。也许谷歌电子表格有一个'importhtml'函数可以用来代替? –

    +0

    @KeithHall,谢谢你的回复。不幸的是,importhtml函数只支持表和列表标记。 –

    回答

    0

    这不是你的xpath是错的,而是源不是一个正确的xml文档(img标签没有关闭)。

    事实上,如果你尝试运行:

    =IMPORTXML(url, "//div[@class='rs rating']") 
    

    它解析为:

    1,087 Reviews. 
    

    但它的任何后代将抛出一个错误。 你可以尝试首先通过'消毒剂'传递html源代码,然后它应该可以工作。

    +0

    感谢您的回应,但我想采取评级。 (3.5)。对不起,我可能知道清理html源代码很热吗? –

    +0

    html消毒不是一项小任务。您将无法直接从tripadvisor使用html,但您需要在本地保存html,在其上调用清理程序,然后调用Google表格中的导入功能,或者您需要设置代理服务那会为你消毒。无论哪种情况都不是一件微不足道的事情。看看http://jsoup.org/和https://www.npmjs.com/package/sanitize-html。作为最后的手段,你可以申请一些正则表达式来修复img标签到html之前使用importxml – Daniele

    +0

    我仔细看过你正在解析的源代码页,我看到有很多非封闭标签等。没有尝试抓取格式不正确的页面,您是否考虑使用Tripadvisor API? (https://developer-tripadvisor.com/content-api/) – Daniele

    相关问题