1

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

该 Google Doc 中的代码如下:

=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 查询看起来不错。确实,有许多在线教程可以准确地推荐我在这里所做的事情。

雅虎查询返回正确的结果,它是唯一的。

Bing Xpath 查询找到的结果数量与Bing 网页上给出的结果不匹配,即使只有一个 XML 节点与 XPath 查询匹配。更多详细信息请参见此处的电子表格

哪里出了这么大的问题?

4

3 回答 3

1

由于 URL 中未编码的双引号,Google 可能无法正常工作。由于importxml字符串分隔符是一个双引号,这可能行不通。将双引号编码为%22.

不确定必应。最好的猜测是您的 XPath 正在运行,但 Bing 出于某种原因向您和 Google Docs 返回了不同的结果。

于 2012-07-13T23:34:27.733 回答
1

试试这个....

=importxml("http://www.google.com/search?q='xpath+tutorial&num=30&pws=0'", "//div[@id='resultStats']")
于 2012-08-21T16:22:50.287 回答
0

魔鬼在细节中——如果您不向我们展示您的代码,我们将无法为您找到您的错误。

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

于 2012-07-13T10:05:33.203 回答