“导入的内容为空。” GSheets中使用ImportXML抓取时出错

时间:2019-04-02 21:06:04

标签: xpath web-scraping google-sheets

我需要从目录的链接网页中将图像的源URL抓取到Google表格中的列。

我认为使用public class Example { public static void main(String[] args) { Object module = new Random().nextBoolean()? new Module2(): new Module1(); Factory factory = new Factory(); Controllers produce1 = factory.produce(module.getClass()); produce1.method1(module); } } class Factory { Controllers produce(Class<?> clz) { if (Module1.class.equals(clz)) return new Controller1(); if (Module2.class.equals(clz)) return new Controller2(); throw new IllegalArgumentException(); } } interface Controllers<T> { void method1(T t); } class Controller1 implements Controllers<Module1> { public void method1(Module1 integer) { System.out.println("in 1!"); } } class Controller2 implements Controllers<Module2> { public void method1(Module2 module) { System.out.println("in 2!"); } } class Module1 { } class Module2 { } 函数是最简单的解决方案,但是每次都会出现#N / A“导入的内容为空。” 错误。

我也尝试使用this extension来定义XPath,但仍然是相同的错误。

页面的源代码,其中图像源URL为:

IMPORTXML

所以我想将“ i.example.com/01.jpg”的值设置为B2,然后再将其他图像的URL设置为相邻单元格的地址。

我使用的功能是:

<div class="centerer" id="rbt-gallery-img-1">
  <i class="spinner">
    <span></span>
  </i>
  <img data-lazy="//i.example.com/01.jpg" border="0"/>
</div>

我尝试使用微调器而不是居中器,结果相同。

1 个答案:

答案 0 :(得分:0)

您可以使用以下XPath-1.0表达式获取字符串i.example.com/01.jpg

substring-after(//div[@class='centerer']/img/@data-lazy,'//')

如果您不需要删除前导//,则只能使用

//div[@class='centerer']/img/@data-lazy

因此,在第一种情况下,Google-Sheets表达式可能是

=IMPORTXML(A2,"substring-after(//div[@class='centerer']/img/@data-lazy,'//')")

第二次可能是

=IMPORTXML(A2,"//div[@class='centerer']/img/@data-lazy")