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. Java 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®ion=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.
Vielleicht wird dieser Link mit Javascript generiert? Versuchen Sie diese http://stackoverflow.com/documentation/jsoup/4632/parsing-javascript-generated-pages#t=201702071004321608713 – Tim
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
Haben Sie versucht, den Benutzer-Agent beim Verbinden mit der URL festzulegen? http://StackOverflow.com/Questions/10187603/useragent-in-Jsoup – Tim