Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
幻影<;span>;元素在Google电子表格中使用ImportXML和XPath_Xpath_Google Sheets_Html - Fatal编程技术网

幻影<;span>;元素在Google电子表格中使用ImportXML和XPath

幻影<;span>;元素在Google电子表格中使用ImportXML和XPath,xpath,google-sheets,html,Xpath,Google Sheets,Html,我正在尝试使用XPath从Google电子表格中的via importXML获取元素属性的值 我搜索的属性值是content,可以在中找到itemprop=“price” Pretul tau: 698,31 ... 我可以访问,但无法访问元素 尝试使用: //span[@class='pret']/@content我得不到 //span[@itemprop='price']/@content我得不到 //div[@class='left']/span[@class='pret'和@ite

我正在尝试使用XPath从Google电子表格中的via importXML获取元素属性的值

我搜索的属性值是
content
,可以在
中找到
itemprop=“price”


Pretul tau:

698,31 ...
我可以访问
,但无法访问
元素

尝试使用:

  • //span[@class='pret']/@content
    我得不到
  • //span[@itemprop='price']/@content
    我得不到
  • //div[@class='left']/span[@class='pret'和@itemprop='price']/@content
    我得不到
  • //div[@class='left']/span[1]/@content
    我得不到
  • //div[@class='left']/span/text()
    获取
    的文本节点i get 35; N/A
  • //div[@class='left']
    //
    span/text()
    我在
    div.left
    的下方得到了
    的文本节点
要获取
的文本节点,我必须使用
//div[@class='left']/text()
。但我不能使用该文本节点,因为如果产品在销售中,跨度的布局会发生变化,所以我需要该属性

这就像我正在寻找的span不存在一样,尽管它出现在Chrome的development视图中,出现在页面源代码中,并且所有XPath都在控制台中使用
$x(“”

我试图通过右键单击直接从开发工具生成XPath,结果得到了不起作用的
/*[@id='produs']/div[4]/div[4]/div[1]/span
。我还尝试使用Firefox和FF和Chrome插件生成XPath,但没有成功。以这些方式生成的XPath在我用“手工编码的XPath”勉强拼凑的站点上甚至不起作用

现在,最奇怪的是,在这个代码结构明显相似的地方,XPath
//span[@itemprop='price']/@content
可以工作。


我为此挣扎了4天。我开始认为这与自动关闭元标记有关,但为什么在其他网站上不发生这种情况?

也许以下公式可以帮助您:

=ImportXML("http://...","//div[@class='product-info-price']//div[@class='left']/text()")

更新

似乎没有正确解析整个文档,它就失败了。文档提取,类似于:


Pretul tau:

698,31
    拉塔德拉塔28,18罗恩普林 Pretul include TVA 鳕鱼产品:GA-Z87X-UD3H
使用以下XPath查询:

"//div[@class='product-info-price']//div[@class='left']//span[@itemprop='price']/@content"
更新

我想到了一个选项,您可以使用它来创建自己的ImportXML函数,例如:

/*用于演示的代码*/
函数MyImportXML(url){
找到变量,html,内容=“”;
var response=UrlFetchApp.fetch(url);
如果(答复){
html=response.getContentText();
如果(html)content=html.match(//gi)[0].match(/content=“(.*)”/i)[1];
}
返回内容;
}
然后您可以按如下方式使用:

=MyImportXML("http://...")

也许以下公式可以帮助您:

=ImportXML("http://...","//div[@class='product-info-price']//div[@class='left']/text()")

更新

似乎没有正确解析整个文档,它就失败了。文档提取,类似于:


Pretul tau:

698,31
    拉塔德拉塔28,18罗恩普林 Pretul include TVA 鳕鱼产品:GA-Z87X-UD3H
使用以下XPath查询:

"//div[@class='product-info-price']//div[@class='left']//span[@itemprop='price']/@content"
更新

我想到了一个选项,您可以使用它来创建自己的ImportXML函数,例如:

/*用于演示的代码*/
函数MyImportXML(url){
找到变量,html,内容=“”;
var response=UrlFetchApp.fetch(url);
如果(答复){
html=response.getContentText();
如果(html)content=html.match(//gi)[0].match(/content=“(.*)”/i)[1];
}
返回内容;
}
然后您可以按如下方式使用:

=MyImportXML("http://...")

也许以下公式可以帮助您:

=ImportXML("http://...","//div[@class='product-info-price']//div[@class='left']/text()")

更新

似乎没有正确解析整个文档,它就失败了。文档提取,类似于:


Pretul tau:

698,31
    拉塔德拉塔28,18罗恩普林 Pretul include TVA 鳕鱼产品:GA-Z87X-UD3H
使用以下XPath查询:

"//div[@class='product-info-price']//div[@class='left']//span[@itemprop='price']/@content"
更新

我想到了一个选项,您可以使用它来创建自己的ImportXML函数,例如:

/*用于演示的代码*/
函数MyImportXML(url){
找到变量,html,内容=“”;
var response=UrlFetchApp.fetch(url);
如果(响应)
<meta itemprop="currency" content="RON">
<meta itemprop="priceCurrency" content="RON" />