【问题标题】:different answers between Google's site and Google's APIGoogle 的网站和 Google 的 API 之间的不同答案
【发布时间】:2013-06-13 17:23:31
【问题描述】:

我正在尝试编写 JAVA 代码以从 google 获得答案。 我编写的代码仅适用于英语,但当我尝试添加一些希伯来语字符时,得到的答案与我在 Google 网站上编写时不同。
代码如下:

String address = "https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=";
String charset = "UTF-8";
URL url;

try 
{
    url = new URL(address + URLEncoder.encode(artistAndSong + site, charset));
          //The url seems right, and it's the same as the url that appear on the web
    Reader reader = new InputStreamReader(url.openStream(), charset);
    GoogleResults results = new Gson().fromJson(reader, GoogleResults.class);
    res =(results.getResponseData().getResults().get(0).getUrl());
          //This is the part where I see that the answers are not the same
}

class GoogleResults{

private ResponseData responseData;
public ResponseData getResponseData() { return responseData; }
public void setResponseData(ResponseData responseData) { this.responseData = responseData; }
public String toString() { return "ResponseData[" + responseData + "]"; }

static class ResponseData {
    private List<Result> results;
    public List<Result> getResults() { return results; }
    public void setResults(List<Result> results) { this.results = results; }
    public String toString() { return "Results[" + results + "]"; }
}

static class Result {
    private String url;
    private String title;
    public String getUrl() { return url; }
    public String getTitle() { return title; }
    public void setUrl(String url) { this.url = url; }
    public void setTitle(String title) { this.title = title; }
    public String toString() { return "Result[url:" + url +",title:" + title + "]"; }
}
}

有人有想法吗?我已经尝试解决了几天...(另外,我尝试使用 unicode,但似乎没有解决它..)
谢谢!

【问题讨论】:

    标签: java android google-api


    【解决方案1】:

    Google 答案会根据您之前的搜索进行个性化设置。尝试在使用您的帐户登录时搜索相同的内容,并且在您未登录时(例如,如果您使用的是 Chrome,请尝试隐身窗口),结果应该会有所不同。

    我认为这就是发生在你身上的事情。

    您的代码中没有任何明显的缺陷。

    【讨论】:

    • 是的,我想过,但我仍然得到相同的结果... :(
    【解决方案2】:

    您可能会遇到以下一种或多种情况:

    • 正如@darijan 所说:无论您是否登录
    • Cookie 是否已存在
    • 可能是某种 UserAgent 歧视
    • 随着 Google 逐步升级其算法,我们可以想象,搜索 API 使用的版本与网站的版本不同。

    【讨论】:

      【解决方案3】:

      Google Api 获取的结果与通过 Google 网站检索到的结果大不相同。这在“SEO世界”中是众所周知的。这很可悲,因为这是从事 SEO 工作的人编写自己的爬虫的主要原因。这些程序正在向 Google 网站而不是 Google Api 进行查询。您是否曾在 Google 搜索网站上看到过captcha?您是否曾被 Google 搜索网站阻止并显示“我们检测到来自您的网络的自动流量。请联系您的互联网服务提供商。”这样的消息? 如果 Google 会在网站和 api 上获取相同的结果,那么 SEO 公司就会停止欺骗他们的网站以获得正确的结果。

      所以答案是There is no bug in your code - this is Google's fault.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-08-13
        • 1970-01-01
        • 2023-01-21
        • 2021-01-21
        • 1970-01-01
        • 1970-01-01
        • 2015-10-26
        相关资源
        最近更新 更多