Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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
Xml Google文档中的XPath查询与HTML源不匹配_Xml_Xpath_Google Docs - Fatal编程技术网

Xml Google文档中的XPath查询与HTML源不匹配

Xml Google文档中的XPath查询与HTML源不匹配,xml,xpath,google-docs,Xml,Xpath,Google Docs,使用我可以构造一个简单的搜索引擎查询,并使用XPath从搜索结果中提取数据。我在GoogleDoc电子表格中有一些简单的例子,它在各种搜索引擎上运行查询“XPath教程”,并尝试提取每个搜索引擎返回的结果数 Google文档中的代码如下所示: =importxml("http://www.google.com/search?q="xpath+tutorial"&num=30&pws=0", "//div[@id='resultStats']") =impo

使用我可以构造一个简单的搜索引擎查询,并使用XPath从搜索结果中提取数据。我在GoogleDoc电子表格中有一些简单的例子,它在各种搜索引擎上运行查询“XPath教程”,并尝试提取每个搜索引擎返回的结果数

Google文档中的代码如下所示:

=importxml("http://www.google.com/search?q="xpath+tutorial"&num=30&pws=0", 
           "//div[@id='resultStats']")
=importxml("http://www.bing.com/search?q=xpath+tutorial&count=30", 
           "//span[@class='sb_count']")
=importxml("http://search.yahoo.com/search?p=xpath+tutorial&n=30", 
           "//span[@id='resultCount']")
关于这件事有一些奇怪的地方,我不明白。首先,Google搜索不会返回任何结果,但是XPath查询看起来不错。事实上,有很多在线教程推荐我在这里所做的事情

Yahoo查询返回正确的结果,这是唯一返回正确结果的查询

Bing Xpath查询找到的结果数与上给出的结果不匹配,即使只有一个XML节点与Xpath查询匹配。更多详情请参阅


哪里出了这么大的问题?

问题出在细节上——如果你不给我们看你的代码,我们就找不到你的bug


然而,XPath被定义为针对XML运行,而您似乎是针对HTML运行它。因此,混淆可能在于HTML映射到XML的方式:例如,通过添加隐式节点(如tbody)、通过大小写折叠或通过命名空间处理。

由于URL中未编码的双引号,Google one可能无法工作。由于
importxml
字符串分隔符字符是双引号,因此这可能不起作用。将双引号编码为
%22

我不确定必应。最好的猜测是您的XPath正在工作,但由于某些原因,Bing正在向您和Google文档返回不同的结果。

试试这个

=importxml("http://www.google.com/search?q='xpath+tutorial&num=30&pws=0'", "//div[@id='resultStats']")

由于没有显示任何代码,所以进行了向下投票。这些代码都在谷歌文档中,该文档也显示了搜索结果,并提供了一些来自搜索引擎的源代码的详细信息。我现在已经在问题中添加了一些内容。关于HTML的一点很有趣。我怀疑这就是谷歌查询不起作用的原因,但它不能解释雅虎的结果。好的,我去掉了引号,所以现在语句的内容是
=importxml(“http://www.google.com/search?q=xpath+tutorial&num=30&pws=0“,“//div[@id='resultStats']”
和电子表格中的输出仍然相同:(@snim2我唯一能想到的是发送到Google Docs的Google搜索结果页面(可能与您在浏览器中看到的不同)不包含id属性为“resultStats”的div。这是可能的,但我不明白为什么会这样。而且,这很明显/过去/起作用,因为有很多教程推荐我使用的方法!哇,好吧,这很有效。我的代码和你的代码之间似乎唯一的区别是URL中键/值对周围的额外引号。谢谢。