2014-10-04 2 views
0

Я хотел бы отфильтровать все ссылки на сайты из поиска Google. Если я что-то ищу, я хочу получить все ссылки на сайты сайтов, которые Google показывает нам.Как исключить результаты поиска (ссылки) из поиска Google в Java

Сначала я хочу прочитать полный html-контент. Впоследствии я хотел бы отфильтровать все важные URL-адреса. Например -> Если я поставлю слова «купить обувь» в google -> Я хочу получить ссылки типа «www.amazon.in/Shoes» и так далее.

Если я начинаю свою программу, я получаю лишь несколько ссылок, и только Google сайты, основанные как «google.de/intl/de/options/»

PS: Я проверил исходный код страницы с тем же запросом («купить + обувь») в браузере Chrome и Firefox и обратите внимание, что браузер Chrome предоставляет гораздо больше контента, чем браузер Firefox. Я чувствую, что получаю только несколько результатов веб-сайта, потому что java подключается, как браузер Firefox, не так ли? Как получить все эти ссылки, которые отображаются в Google?

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.net.URLConnection; 
import java.nio.charset.Charset; 
import java.util.Scanner; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
public class findEveryUrl { 
public static void main(String[] args) throws IOException 
{ 

    String gInput = "https://www.google.de/#q="; 
    // setKeyWord asks you to enter the keyword into the console 
    String fullUrl = gInput + setKeyWord(); 
    //fullUrl is used for the InputStream and "www." is the string, which is used for splitting 
    findAllSubs(fullUrl, "www."); 
    //System.out.println("given url: " + fullUrl); 
} 



/* 
* @param <T> String type. 
* @param urlString has to be the full Url. 
* @param splitphrase is the String which is used for splitting. 
* @return void 
*/ 
static void findAllSubs(String urlString, String splitphrase) 
{ 
    try 
    { 
     URL  url  = new URL(urlString); 
     URLConnection yc = url.openConnection(); 
     BufferedReader in = new BufferedReader(new InputStreamReader(
       yc.getInputStream())); 
     String inputLine ; 
     String array[]; 

     while ((inputLine = in.readLine()) != null){ 
      inputLine += in.readLine(); 
      array = inputLine.split(splitphrase); 
      arrayToConsol(array); 

     } 
    }catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 



/* 
* urlQuery() asks you for the search keyword for the google query 
* @return returns the keyword, which you wrote into the console 
*/ 
public static String setKeyWord(){ 
    BufferedReader console = new BufferedReader(new InputStreamReader(System.in)); 
    System.out.print("Enter a KeyWord: "); 
    //googles search engine url 

    String keyWord = null; 
    try { 
     keyWord = console.readLine(); 
    } catch (IOException e) { 
     // shouldn't be happen 
     e.printStackTrace(); 
    } 

    return keyWord; 
} 

public static void arrayToConsol(String[] array){ 
    for (String item : array) { 
     System.out.println(item); 
    } 
} 

public static void searchQueryToConsole(String url) throws IOException{ 
    URL googleSearch = new URL(url); 
    URLConnection yc = googleSearch.openConnection(); 
    BufferedReader in = new BufferedReader(new InputStreamReader(
      yc.getInputStream())); 
    String inputLine; 
    while ((inputLine = in.readLine()) != null) 
     System.out.println(inputLine); 
    in.close(); 
}} 

ответ

0

Это простенькое и простое решение.

http://www.programcreek.com/2012/05/call-google-search-api-in-java-program/

Однако, если вы хотите, чтобы разобрать другие страницы с помощью CSS селекторы, чтобы найти элементы JSoup свою большую библиотеку.

Document doc = Jsoup.connect("http://en.wikipedia.org/").get(); 
Elements newsHeadlines = doc.select("#mp-itn b a"); 
+0

Спасибо, Daredesm, за ваш быстрый ответ =) –

Смежные вопросы