【问题标题】:Trying to query data using xpath尝试使用 xpath 查询数据
【发布时间】:2015-03-23 22:28:43
【问题描述】:

我是一个菜鸟,正在尝试从网站查询数据并将其导入 Google 文档电子表格。我已经使用 firebug/firepath 来查找 xpath,当我将 xpath 粘贴到单元格 =importxml(Url, query) 时,它会出错。 这是网址:http://www.sportfishingreport.com/pages/boatdetail.php?boat_id=781

Boat        Trip Type     Anglers                    Catch
03-22-2015  Full Day    21    48 Ocean Whitefish, 210 Rockfish, 21 Lingcod

有人可以帮我写 xpath,因为 firepath 告诉我在谷歌文档中写错误的 xpath。

提前致谢,杰斯

【问题讨论】:

  • 显示到目前为止你尝试过的代码。
  • 告诉我们确切的错误消息,显示您在该单元格中输入的公式,确切的 XPath 表达式 - 并非常清楚地显示您想要的结果。
  • 网址为:channelislandssportfishing.com/fish-counts。每个单元格都有不同的 xpath 来查询它。所以假设我想先导入船名,即 Erna B。Firepath 说 xpath 是:html/body/table[2]/tbody/tr/td/table/tbody/tr[1]/td/table /tbody/tr/td/table/tbody/tr/td/form/table/tbody/tr/td/div/table[2]/tbody/tr[1]/td/div/table[1]/tbody/ tr[2]/td[1].
  • 我输入 =importxml(url, "//*html/body/table[2]/tbody/tr/td/table/tbody/tr[1]/td/table/tbody/tr /td/table/tbody/tr/td/form/table/tbody/tr/td/div/table[2]/tbody/tr[1]/td/div/table[1]/tbody/tr[2] /td[1]") 并返回错误导入的 xml 内容无法解析。我想查询并导入船名、旅行类型、垂钓者数量和捕获量,每个都有不同的 xpath,但我无法做到这一点。 Xpath 将其验证为匹配的节点。

标签: html xpath google-sheets


【解决方案1】:

您指定的第二页的源 HTML 中没有表格(即http://www.channelislandssportfishing.com/fish-counts)。如果有的话,这些表是由 Javascript 生成的,但是 IMPORTXML 找不到此内容,因为它在原始源 HTML 上运行。

但无论如何,您从 Firepath 中获得的信息都非常复杂,因为该工具倾向于返回依赖于节点位置的路径表达式,而不是实际值、ID 或名称。如果您查看源 HTML,包含“Erna B”的 HTML 部分看起来像

<a href="/erna-b-sportfishing" ><span style="color: #000000;">Erna B</a>

实际上有一个简单的 XPath 表达式可以选择这个内容,因为 href 属性值是唯一的。要让“Erna B”出现在 Google 表格的单元格中,请使用

=IMPORTXML("http://www.channelislandssportfishing.com/fish-counts","//a[@href='/erna-b-sportfishing']")

对于所有其他单元格,寻找唯一标识节点的类似属性,并将其转换为路径表达式。

【讨论】:

  • 您好 Mathias Muller,感谢您的回答。我会尝试一下,看看我是否可以弄清楚特定节点的 xpath 是什么来访问钓鱼者旅行类型,并捕获每个单元格的数据。我真的很感谢你的帮助。我将使用您的锚超参考方法。如果我有困难,我可能需要再次打扰你。再次感谢,杰斯
  • @jessj 欢迎您。如果它解决了您的问题,请不要忘记accept this answer。谢谢!如果您遇到更多问题,我认为最好提出一个新问题。
  • 您好 Mathias Muller,我想导入整个数据表,即每天每个单元格的船名、行程类型和捕获数据。有时有 3 艘船,有时多达 9 艘船。如果有一个使用 @href 的锚标签,我会怎么做,你看到它可以做到这一点。谢谢你,杰斯
  • @jessj 正如我所说,该页面的源 HTML 中没有表格 - 它是后来从 Javascript 生成的 - IMPORTXML 找不到此类内容。除了船名,似乎所有内容都是动态生成的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 2016-10-07
  • 2017-05-15
  • 2023-04-03
  • 1970-01-01
  • 2012-09-02
相关资源
最近更新 更多