【问题标题】:xpath to skip missing table imagesxpath 跳过丢失的表格图像
【发布时间】:2020-08-22 21:46:53
【问题描述】:

我正在从表格中抓取图像 url 和文本,我想知道如何为缺少图像的单元格收集任何内容(或至少没有 url)。我不想删除任何行,因为我想按原样复制表格。这是an example 的表格,其中缺少图像和右侧的 html。

我在谷歌表格中使用以下内容:

=importxml(D1,"//div[@class='colsx immagine']/img/@src")
=importxml(D1,"//div[@class='coldx domanda']")

如果图像都在那里(如page),则可以很好地获取每行的图像url和文本。但是,如果缺少任何图像,那么我会为下表中的(错误)图像收集一个 url。如果没有 img url,我想跳过 url 收集。

我刚开始学习 xpath,我怀疑我需要使用 |not 来解决此问题,但需要一些帮助,因为我尝试过的任何方法都不起作用。

谢谢

【问题讨论】:

  • 当您说您不想删除行时,您的意思是您希望IMPORTXML 在找不到相应图像时追加空单元格?
  • @Iamblichus 是的,就是这样。关键是允许将元素与类似导入的其他表格列对齐,而不管表格单元格内容是否存在。 “......按原样复制表格”。我猜有一些我还不熟悉的简单 xpath 命令
  • 我不确定这是IMPORTXML 的预期行为(如果当前元素不存在此 URL,我认为它不应该提供与下面的图像对应的 URL )。我建议您通过在编辑器中选择 Help > Report a problem 来报告此问题。

标签: xpath google-sheets google-sheets-importxml


【解决方案1】:

您可以通过添加另一个谓词来解决此问题。所以假设你想用一张图片列出//div[@class='lista']的网址,你可以使用

=importxml(D1,"//div[@class='lista' and div/img]/div[@class='colsx immagine']")
=importxml(D1,"//div[@class='lista' and div/img]/div[@class='coldx domanda']")
=importxml(D1,"//div[@class='lista' and div/img]/div[@class='coldx risposta active gius']")

等等。
这应该会跳过所有没有 img 标签的类 'lista' div 并选择其 URL。

【讨论】:

  • 我将答案修正了 180 度。提供minimal reproducible example 总是更好(以便可以测试答案)。
  • 你误解了我的问题。无论图像是否丢失,我都想重现该表。您的答案省略了所有没有图像的行。我仍然想要那些行,但是您将我的回答解释为好像我想删除它们一样。我承认您的解释是明智的,所以我现在添加了一个新句子“我不想删除任何行,因为我想按原样复制表格。”但我发现很难清楚地传达这一点。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-24
  • 1970-01-01
  • 2019-05-11
  • 2011-12-29
  • 1970-01-01
  • 1970-01-01
  • 2014-05-09
相关资源
最近更新 更多