我需要从目录的链接网页中将图像的源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>
我尝试使用微调器而不是居中器,结果相同。
答案 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")