使用XpathBuilder我可以构建一个简单的搜索引擎查询,并使用XPath从搜索结果中提取数据。我在Google Doc电子表格here中有一些简单的示例,它运行查询" 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查询看起来没问题。实际上,有许多在线教程正好推荐我在这里所做的事情。
Yahoo查询返回正确的结果,它是唯一一个。
Bing Xpath查询找到的结果数与Bing web page上给出的结果不匹配,即使只有一个XML节点与XPath查询匹配。更多详情请见spreadsheet here
这一切在哪里出错了?
答案 0 :(得分:1)
由于URL中未加编码的双引号,Google可能无法正常工作。由于importxml
字符串分隔符是双引号,因此可能不起作用。将双引号编码为%22
。
不确定Bing。最好的猜测是你的XPath正在运行,但Bing因某种原因会向你和Google Docs返回不同的结果。
答案 1 :(得分:1)
试试这个......
=importxml("http://www.google.com/search?q='xpath+tutorial&num=30&pws=0'", "//div[@id='resultStats']")
答案 2 :(得分:0)
魔鬼在细节 - 如果你没有告诉我们你的代码,我们找不到你的错误。
但是,XPath被定义为针对XML运行,而您似乎是针对HTML运行它。因此,混淆可能与HTML映射到XML的方式有关:例如,通过添加隐式节点(如tbody,通过大小写折叠或通过命名空间处理)。