1

我对网页和查询执行 bing API 搜索cameras

结果的第一“页” ( offset=0, count=50) 返回 49 个实际结果。它还返回了totalEstimatedMatches1.14114000000亿美元。很好,结果很多。

结果的第二“页”(offset=49, count=50)执行类似...

...直到我到达第 7 页 ( offset=314, count=50)。突然totalEstimatedMatches544

每页返回的实际结果数从那里开始急剧下降。事实上,超过 43 个“页面”的结果,我得到了 413 个实际结果,其中只有 311 个具有唯一 URL。

这似乎发生在少量页面之后的任何查询中。

这是预期的行为吗?API文档中没有暗示详尽的分页会导致这种行为......但是你有它。

这是一个屏幕截图:

奇怪的行为

4

2 回答 2

1

这似乎是预期的行为。Web Search API 不是爬虫 API,因此它只提供算法认为与人类相关的结果。简而言之,大多数人不会浏览超过几页的结果,而且他们希望在第一页上找到相关的结果。

如果您可以检索数百万的结果,您只需复制他们的搜索索引,Bing 就会倒闭。

搜索索引似乎是政治和经济力量的东西,据我所知,全世界只有四个相关的搜索索引:来自谷歌、来自微软(Bing)、来自俄罗斯和来自中国。那些控制搜索的人,控制了香料...... ;-)

于 2020-03-10T09:28:32.973 回答
1

每次调用 API 时,搜索 API 都会从结果集中获取一组可能的匹配项,然后根据不同的参数(例如垃圾邮件、重复项、安全搜索设置等)过滤掉结果,最后留下最终结果放。如果过滤优化后的最终结果大于count参数,则返回等于count的结果个数。如果参数大于最终结果集计数,则返回最终结果集,该结果集将小于计数范围。如果再次调用搜索 API,传入 offset 参数以获取下一组结果,则过滤过程会在下一组结果上再次发生,这意味着它也可能小于 count。

  您不应该期望每次 API 调用总是返回完整的count参数结果数。如果需要超出返回数量的更多搜索结果,则应再次调用查询,并传入offset参数,其值等于先前 API 调用中返回的结果数量。这也意味着在进行后续 API 调用时,offset参数绝不应该是硬编码值,并且应该始终根据先前查询的结果进行计算。 

totalEstimatedMatches也可能会增加 Bing Search API 结果的混淆。“估计”一词很重要,因为该数字是在上述过滤之前基于初始快速结果集的估计。此外,totalEstimatedMatches值可以随着您通过使用增加的偏移值进行后续 API 调用来迭代结果集而改变。totalEstimatedMatches应用作指示可能结果集大小的粗略指南,不应用于确定最终将返回的结果数量。要查询所有可能的结果,您应该继续进行 API 调用,传入偏移量具有先前调用中返回的结果的总和的值,直到该总和大于最近 API 调用的totalEstimatedMatches 。

  请注意,您可以通过直接访问 bing.com 并使用诸如https://www.bing.com/search?q=bill+gates&count=50之类的查询来查看相同的行为。请注意,您将获得约 34 个结果,totalEstimatedMatches约为 567,000(截至 2017 年 6 月有效,未来的搜索可能会发生变化),如果您单击“下一页”箭头,您将看到执行的下一个查询将从偏移量开始在第一个查询中返回的 34 个(即https://www.bing.com/search?q=bill+gates&count=50&first=34)。如果您多次单击“下一步”,您可能会看到totalEstimatedMatches也会因页面而异。

于 2017-10-13T18:38:03.420 回答