我有一组大小约为的搜索查询。 1000万目标是收集搜索引擎为所有人返回的点击次数。例如,Google为查询“stackoverflow”返回大约47,500,000。
问题在于:
1- Google API每天限制为100次查询。这远非对我的任务有用,因为我必须得到很多重要的数据。
2-我使用Bing API,但它没有返回准确的数字。在匹配Bing UI中显示的点击次数的意义上获得收益。有没有人以前遇到过这个问题?
3-向搜索引擎发布搜索查询并解析html是一种解决方案,但它会导致CAPTCHA,并且不会扩展到此数量的查询。
所有我关心的是点击数量,我对任何建议持开放态度。
答案 0 :(得分:2)
好吧,我真的希望有人会回答这个,因为这也是我有兴趣发现的东西,但是因为它看起来不像任何人,我会抛出这些建议。
您可以设置一系列代理,每100个请求更改一次IP,这样您就可以将google视为看似不同的人(看起来很多工作)。或者你可以download wikipedia并写一些东西来解析那里的数据,这样当你搜索一个术语时,你可以看到它落入了多少页面。当然,这是一个比整个网络小得多的数据集,但它应该得到你开始。另一个可能的数据源是google n-grams data,您可以下载并解析以查看搜索字词所包含的书籍和页数。也许这些方法的组合可以提高任何给定搜索字词的准确性。
当然,没有一种方法可以直接让谷歌页面直接计数,但可以理解的是,这是他们不想免费提供的数据。
答案 1 :(得分:1)
我看到这是一个非常老的问题,但是我正试图做同样的事情,使我来到这里。我将添加一些信息和当前的进度:
首先,您得出的估算值可能会发生巨大变化的原因是,搜索引擎使用概率算法来计算相关性。这意味着在查询过程中,他们不需要检查所有可能的匹配,就可以以相当的置信度通过相关性计算出前N个匹配。这意味着当搜索结束时,对于较大的结果集,搜索引擎实际上并不知道命中总数。不过,它已经看到了一个具有代表性的示例,并且可以使用有关查询中所用术语的一些统计信息来设置可能的匹配次数上限。这就是为什么您仅对大型结果集进行估算的原因。以这样一种方式来运行查询,使您获得准确的计数将需要大量的计算。
我能达到的最好成绩是通过欺骗搜索引擎查看更多结果来完善估算值。为此,您需要转到结果的第2页,然后修改URL中的“ first”参数以使其更高。这样做可以让您找到结果集的末尾(去年,这对我很有用,尽管今天它只能工作到前几千,但我敢肯定)。即使不允许您到达结果集的末尾,您也会看到随着查询引擎考虑更多的匹配次数,估算值会变得更好。
我发现以上述方式使用Bing稍微容易一些-但我仍无法获得我正在考虑的网站的确切数量。 Google似乎正在积极阻止这种使用其引擎的行为,这并不奇怪。必应似乎也达到了极限,尽管它们看上去更像是缺陷。
在我的用例中,使用上述技术,我可以使两个搜索引擎的估算值都非常相似(Bing为14.8万,Google为149k)。我能从Google获得的最高点击数是323,而Bing则上升到700-两者都非常不准确,但这并不奇怪,因为这不是他们打算使用的产品。
如果您想在自己的网站上使用它,则可以使用搜索引擎的网站站长工具查看索引的页数。对于其他网站,我认为您需要使用搜索引擎API(需要付费)。