Jsoup парсинг результатов Google

Я хочу получить все ссылки и эскизы, где бы они ни были указаны в конкретном поиске Google. Вот мой код

package com.esocial.util;

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;


public class ListLinks {
    public static void main(String[] args) throws IOException {
        String url = "https://www.google.co.in/webhp?sourceid=chrome-instant&rlz=1C1CHWA_enIN609IN609&ion=1&espv=2&ie=UTF-8#q=thermodynamics%20cbse";
        System.out.println("Fetching : "+url+"\n\n");

        Document doc = Jsoup.connect(url).userAgent("Mozilla").get();

        Elements div = doc.select("div.srg");

        for(Element di : div)
        {
            Elements lists = di.select("li.g");

            for(Element list : lists)
            {
                Element anc = list.select("a").first();
                Element img = list.select("img").first();


                System.out.println("\nLink : "+anc.attr("href")+"\nImage Link : "+img.attr("src")+"\n------------------------------------------\n");

            }
        }   
    }

}

Но этот код не работает должным образом и не отображает результаты. Я не понимаю, в чем проблема.

1 ответ

Я также работал, чтобы получить результат поиска.

Чтобы получить HTML-страницу. Я запросил пост REST звонок.

    // HTTP GET request
private void sendGet(String query, GoogleSearchCallback googleSearchCallback) throws Exception {
    ArrayList<GoogleSearchResult> googleSearchResults = new ArrayList<>();
    String url = "https://www.google.co.in/search?q=" + query + "#q=" + query + "course";

    URL obj = new URL(url);
    HttpURLConnection con = (HttpURLConnection) obj.openConnection();

    // optional default is GET
    con.setRequestMethod("GET");

    con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64)");

    int responseCode = con.getResponseCode();
    System.out.println("\nSending 'GET' request to URL : " + url);
    System.out.println("Response Code : " + responseCode);

    BufferedReader in = new BufferedReader(new InputStreamReader(
            con.getInputStream()));
    String inputLine;
    StringBuffer response = new StringBuffer();

    while ((inputLine = in.readLine()) != null) {
        response.append(inputLine);
    }
    in.close();

    // print result
    System.out.println(response.toString());
    Document document = Jsoup.parse(response.toString());
    Elements links = document.select("a[href]");
    for (Element link : links) {

        String temp = link.attr("href");
        if (temp.startsWith("/url?q=")) {
            Log.i(TAG, "" + temp.replace("/url?q=", "") + "");

            URL tempUrl = new URL(temp.replace("/url?q=", ""));
            String path = tempUrl.getFile().substring(0, tempUrl.getFile().lastIndexOf('/'));
            String base = tempUrl.getProtocol() + "://" + tempUrl.getHost() + path;
            Log.i(TAG, "" + base);
            Log.e(TAG, getDomainName(temp));

            GoogleSearchResult googleSearchResult = new GoogleSearchResult();
            googleSearchResult.setResultLink(base);
            googleSearchResult.setResultTitle(link.text());
            googleSearchResults.add(googleSearchResult);
        }
    }
    googleSearchCallback.onGetGoogleResultSuccess(googleSearchResults);
}

 private String getDomainName(String url) {

    String domainName = "";
    matcher = patternDomainName.matcher(url);
    if (matcher.find()) {
        domainName = matcher.group(0).toLowerCase().trim();
    }
    return domainName;

}

private static Pattern patternDomainName;
private Matcher matcher;
private static final String DOMAIN_NAME_PATTERN = "^(http(s)?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";

static {
    patternDomainName = Pattern.compile(DOMAIN_NAME_PATTERN);
}
Другие вопросы по тегам