2017-02-07 5 views
0

Ich versuche, eine Java-Anwendung, die Infos von Websites zu verschrotten, und ich habe etwas googeln gemacht, und verwaltet sehr einfache Scrapper, aber nicht genug. Es scheint, dass meine Scrapper nicht einige Informationen auf dieser Website verschrotten, vor allem den Teil, wo ich verschrotten möchte. enter image description hereJava Web Scraping mit Jsoup

1.

 Elements links = htmlDocument.select("a"); 
     for (Element link : links) { 
      this.links.add(link.attr("href")); 
     } 

2.

 Elements linksOnPage = htmlDocument.select("a[href]"); 
     System.out.println("Found (" + linksOnPage.size() + ") links"); 
     for(Element link : linksOnPage) 
     { 
      this.links.add(link.absUrl("href")); 
     } 

ich beiden Codes habe versucht, aber ich kann diese Verbindung überall in Elemente Objekt finden. Ich glaube, dass diese Information, die ich will, das Ergebnis der Suche ist, also, wenn mein Programm zu dieser URL verbindet, sind diese Informationen weg. Wie kann ich das lösen? Ich möchte ein Programm, wann immer es beginnt, das Ergebnis dieser Suche verschrotten.

Hier ist die link to the web site

Also meine Frage ist,

1.How do Schrott ich diesen Link in meinen Code des Elements Objekt? Was mache ich falsch?

2. Gibt es eine Möglichkeit, diesen Link auszuwählen und nur mit diesem Link fortzufahren (nicht alle Hyperlinks)?

final Document doc = Jsoup.connect("http://www.work.go.kr/empInfo/empInfoSrch/list/dtlEmpSrchList.do?pageIndex=2&pageUnit=10&len=0&tot=0&relYn=N&totalEmpCount=0&jobsCount=0&mainSubYn=N&region=41000&lastIndex=1&siteClcd=all&firstIndex=1&pageSize=10&recordCountPerPage=10&rowNo=0&softMatchingPossibleYn=N&benefitSrchAndOr=O&keyword=CAD&charSet=EUC-KR&startPos=0&collectionName=tb_workinfo&softMatchingMinRate=+66&softMatchingMaxRate=100&empTpGbcd=1&onlyTitleSrchYn=N&onlyContentSrchYn=N&serialversionuid=3990642507954558837&resultCnt=10&sortOrderBy=DESC&sortField=DATE").userAgent(USER_AGENT).get(); 


    try 
    { 
     Connection connection = Jsoup.connect(url).userAgent(USER_AGENT); 
     Document htmlDocument = connection.get(); 
     this.htmlDocument = htmlDocument; 
     String qqq=htmlDocument.toString(); 
     System.out.println(qqq); 
     if(connection.response().statusCode() == 200) // 200 is the HTTP OK status code 
                 // indicating that everything is great. 
     { 
      System.out.println("\n**Visiting** Received web page at " + url); 
     } 
     if(!connection.response().contentType().contains("text/html")) 
     { 
      System.out.println("**Failure** Retrieved something other than HTML"); 
      return false; 
     } 

     Elements linksOnPage = htmlDocument.select("a[href]"); 
     System.out.println("Found (" + linksOnPage.size() + ") links"); 
     for(Element link : linksOnPage) 
     { 
      this.links.add(link.absUrl("href")); 
      System.out.println(link.absUrl("href")); 
     } 
     return true; 
    } 
    catch(IOException ioe) 
    { 
     // We were not successful in our HTTP request 
     return false; 
    } 

Dies ist der gesamte Code, den ich für Scraping verwende. Dieser Code, ich verwende from this site.

+0

Vielleicht wird dieser Link mit Javascript generiert? Versuchen Sie diese http://stackoverflow.com/documentation/jsoup/4632/parsing-javascript-generated-pages#t=201702071004321608713 – Tim

+0

Ich fand heraus, dass in meinem Code, wenn ich versuche, eine Verbindung zu der Webseite herzustellen, die Ergebnisse einiger Suche zeigt, Die Webseite antwortet mit leeren Ergebnissen, während im Browser (chrome) das richtige Ergebnis angezeigt wird (auch wenn ich dieselbe URL verwende). Ich habe den Text des Dokuments ausgedruckt, und an der Stelle, wo das Ergebnis der Suche sein sollte, sagt die Webseite "kann die gewünschte Seite nicht finden". Also ... kann mir jemand helfen? – Hoon

+0

Haben Sie versucht, den Benutzer-Agent beim Verbinden mit der URL festzulegen? http://StackOverflow.com/Questions/10187603/useragent-in-Jsoup – Tim

Antwort

0

Ich habe das Problem gefunden, und konnte es nicht lösen. Also, was ich versuchte, war, dass ich Informationen von einer Webseite aussortieren wollte, die einige Ergebnisse der spezifischen Suche zeigten. Das Problem war, dass die Webseite mich irgendwie nicht von meiner Java-Anwendung mit jsoup verbinden lässt. Wahrscheinlich, um ihren Inhalt zu schützen. Deshalb gab es keine Elemente, die ich brauchte, weil sie nicht da sind. Die Website bietet openAPI gegen Gebühr, also habe ich mich entschieden, andere Websites zu verwenden.