2017-02-01 4 views
0

У меня проблемы с запуском, когда я пытаюсь очистить поиск от результатов поиска Google. Я использую Jsoup, чтобы вытащить код HTML, но я не могу извлечь информацию с веб-страницы, которая мне нужна. Я стремлюсь достичь описаний информации под заголовками. Вот мой код:Использование Jsoup для анализа описаний поиска в SERPS (Результаты Google)

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 
import java.io.IOException; 
import java.net.InetSocketAddress; 
import java.net.Proxy; 


public class internetSearch { 
    public void retrieveFileInfo(String pulling) { 
     Document doc; 
     try { 
      String proxyAdress = "1.2.3.4"; 
      int proxyPort = 1234; 
      Proxy proxy = new Proxy(Proxy.Type.HTTP,  InetSocketAddress.createUnresolved(proxyAdress, proxyPort)); 

      doc = Jsoup 
        .connect(pulling) 
        .userAgent("Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)") 
        .header("Content-Language", "en-US") 
        .timeout(0) 
        .get(); 

      System.out.println(doc.toString()); 
      Elements links = doc.select("div[class=g]"); 

      for (Element link : links) { 
       Elements titles = link.select("h3[class=r]"); 
       String title = titles.text(); 

       Elements bodies = link.select("span[class=st]"); 
       String body = bodies.text(); 

       System.out.println("Title: " + title); 
       System.out.println("Body: " + body + "\n"); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Я использовал много источников в Интернете, чтобы получить мой код. Раньше я использовал Селен, но безуспешно.

Я постоянно просматриваю свой исход, чтобы найти класс «.st», который находится под (в h3, span, .st), и я не могу прийти к выводу.

Разве просто Google перепутал код или мне не хватает чего-то жизненно важного?

ответ

0

Вот решение с estivate (который является Java DOM Parser с аннотациями совместимы с JSoup)

Document doc = // here your JSoup document grabbing 

EstivateMapper2 mapper = new EstivateMapper2() 

List<GoogleResult> results = mapper.mapToList(doc, GoogleResult .class); 

с Defintion из GoogleResult как следующие:

@Select("div.g") 
public class GoogleResult { 

    @Text(select = "h3.r") 
    public String title; 

    @Text(select = "div.s cite") 
    public String link; 

    @Text(select = "span.st") 
    public String body; 

} 
+0

Как добавить проводить лето в спячке? Мне очень жаль, я не понимаю, как подключить один проект к другому .. –

+0

1) С помощью Maven добавить зависимости к вашему pom.xml com.github.btheu.estivate проводить лето в спячке 0.3.4 2) Или добавить непосредственно банку (и все ее зависимости) к вашему пути к классам из центра maven http://mvnrepository.com/artifact/com.github.btheu.estivate/estivate/0.3.4 –