SORU
16 EYLÜL 2010, PERŞEMBE


Nasıl Google Arama Program aracılığıyla Java API mısın

Herkes nasıl arama yapmak mümkündür Google özellikle eğer bunun için bir Java API varsa, Program aracılığıyla yapar.

Şimdiden teşekkürler. Daniel

CEVAP
16 EYLÜL 2010, PERŞEMBE


Bazı gerçekler:

  1. Google sunmaktadırJSONdöndüren ortak arama Java eklentisi API: http://ajax.googleapis.com/ajax/services/search/web. Documentation here

  2. Java ateş java.net.URL java.net.URLConnection teklifler ve HTTP istekleri.

  3. JSON Java fullworthy Javabean bir nesne keyfi Java JSON API kullanarak dönüştürülebilir. En iyilerinden biri Google Gson.

Şimdi matematik:

public static void main(String[] args) throws Exception {
    String google = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=";
    String search = "stackoverflow";
    String charset = "UTF-8";

    URL url = new URL(google   URLEncoder.encode(search, charset));
    Reader reader = new InputStreamReader(url.openStream(), charset);
    GoogleResults results = new Gson().fromJson(reader, GoogleResults.class);

    // Show title and URL of 1st result.
    System.out.println(results.getResponseData().getResults().get(0).getTitle());
    System.out.println(results.getResponseData().getResults().get(0).getUrl());
}

Google tarafından döndürülen olarak bu Javabean class en önemli JSON temsil eden veri (aslında daha çok veri verir, ama bu Javabean kodu buna göre genişletmek için bir egzersiz olarak bırakılmıştır)

public 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   "]"; }
    }

}

Ayrıca Bkz:


GüncellemeKasım 2010'dan bu yana (2 ay yukarıdaki cevaptan sonra), kamu arama Java eklentisi haline gelmiştirkaldırılmış(bu hizmet teklif edildi son gün 29 Eylül, 2014). En iyi bahis şimdi http://www.google.com/search dürüst bir kullanıcı aracı ile birlikte doğrudan sorgulama ve sonucu HTML parser kullanarak ayrıştırmak. Eğer kullanıcı Aracısı atlarsanız, o zaman 403 geri alırsın. Kullanıcı Aracısı yalan söylüyorsun ve bir web tarayıcısı (örneğin Chrome veya Firefox) taklit ederse, o zaman bant genişliği ve performans kaybı olan yol çok daha büyük bir HTML yanıt geri almak.

İşte maçın başlamasına bir örnek HTML ayrıştırıcısı Jsoup kullanarak:

String google = "http://www.google.com/search?q=";
String search = "stackoverflow";
String charset = "UTF-8";
String userAgent = "ExampleBot 1.0 ( http://example.com/bot)"; // Change this to your company's name and bot homepage!

Elements links = Jsoup.connect(google   URLEncoder.encode(search, charset)).userAgent(userAgent).get().select("li.g>h3>a");

for (Element link : links) {
    String title = link.text();
    String url = link.absUrl("href"); // Google returns URLs in format "http://www.google.com/url?q=<url>&sa=U&ei=<someKey>".
    url = URLDecoder.decode(url.substring(url.indexOf('=')   1, url.indexOf('&')), "UTF-8");

    if (!url.startsWith("http")) {
        continue; // Ads/news/etc.
    }

    System.out.println("Title: "   title);
    System.out.println("URL: "   url);
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • merumputdotcom

    merumputdotc

    24 ŞUBAT 2012
  • oHeymarvin

    oHeymarvin

    11 Temmuz 2013
  • THE RED DRAGON

    THE RED DRAG

    6 ŞUBAT 2009