4

我正在尝试编写 JAVA 代码以从谷歌获得答案。我编写的代码仅适用于英语,但当我尝试添加一些希伯来语字符时,我得到的答案与我在 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,但似乎没有解决它..)
谢谢!

4

3 回答 3

6

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

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

无论如何,您的代码中没有明显的缺陷。

于 2013-06-13T17:26:42.853 回答
0

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

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

于 2013-06-22T20:43:01.223 回答
0

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

  • 正如@darijan 所说:无论您是否登录
  • Cookie 已经存在或不存在
  • 也许是某种 UserAgent 歧视
  • 随着谷歌逐步升级他们的算法,我们可以想象搜索 API 不使用与网站完全相同的版本。
于 2013-06-20T10:13:20.783 回答