JSOUP Select Esempi

JSOUP permette di recuperare determinate parti di codice della pagina html tramite il comando <documento>.select(…….). Di seguito vari esempi di comandi.

.select(nometag) recupera tutti gli elementi che hanno il tag nometag.

body.select(“div”)

“#id”: recupera l’elemento che ha il dato id

body.select(“#div_2”);

“.nomeclasse”: recupera gli elementi che hanno come classe css nome classe

body.select(“.rosso”);

“[nome attributo]”: recupera gli elementi che hanno l’attributo specificato

body.select(”[id]”)

“[nome_attributo=valore_attributo]”: recupera gli elementi che hanno per l’attributo indicato il valore indicato

Body.select(“[id=div_2]”);

Ovviamente è possibile utilizzare un selettore composto da una o più delle precedenti regole.

Ad esempio supponendo di voler recuperare tutti gli elementi con tag div e classe css rosso, utilizzeremo il selettore:

“div.rosso”

JSOUP Come estrarre immagini da una pagina html

JSOUP è una libreria per parser html.

In questo tutorial estraiamo tutti le immagini presenti in questa pagina “http://news.ycombinator.com/“.

Con  doc.select(“img”) otteniamo un array di links.

Per ogni immagine, stampiamo l’indirizzo assoluto a cui punta   tramite e.absUrl(“src”)

Parser.java

package jsoup2;

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

public class Parser {

public static void main(String[] args) {

try {
Document doc = Jsoup.connect("http://news.ycombinator.com/").get();

for (Element e : doc.select("img")) {
String src = e.absUrl("src");
System.out.println("src:" + src);

}

}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

Output

Immagine

 

Download sorgenti intero progetto

icona_zip

JSOUP Come estrarre link da una pagina

JSOUP è una libreria per parser html.

In questo tutorial estraiamo tutti i links presenti in questa pagina “http://news.ycombinator.com/“.

Con  doc.select(“a”) otteniamo un array di links.

Per ogni link, stampiamo l’indirizzo assoluto a cui punta   tramite e.attr(“abs:href”)

Parser.java

package jsoup1;

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

public class Parser {
public static void main(String[] args) {try {
Document doc = Jsoup.connect("http://news.ycombinator.com/").get();

for (Element e : doc.select("a")) {
String href = e.attr("abs:href");
System.out.println("href:" + href);

}

}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

 

Output

Jsoup come estrarre i link da una pagina output

 

Download sorgenti intero progetto

icona_zip

JSOUP Parser Esempio Hello World

Jsoup è una libreria per parser html, sia online che offline. In questo tutorial mostriamo come fare un parser di un sito (www.html.it) e di un file html salvato in locale.

 

 

Dipendenza da aggiungere nel pom.xml

 

<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.11.3</version>
</dependency>

Parser Sito

package jsoupparser;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class ParserHtml {
public static void main(String[] args) {

try {
Document doc = Jsoup.connect("http://www.html.it").get();

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

}

}

Parser file html locale

import java.io.File;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class Parser {
	public static void main(String[] args) {

		try {

			File input = new File("c:\\PROVA.html");
			Document doc = Jsoup.parse(input, "UTF-8");

		} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}
		}
	}

}

JSOUP parsing facebook page

Facebook, quando si cerca di are il parsing, con JSOUP in questo caso, di una sua pagina, non restituisce la pagina cosi come la si vede ma ci da la pagina di login. Osservando un pò meglio, in realtà le informazioni da noi richieste ci sono, ma sono nei commenti. Il seguente codice permette di ricreare la pagina da noi richiesta, potendo cosi fare il parsing, dai commenti restituiti:

      Document docTotal = Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36")
.referrer("http://www.google.com").followRedirects(true)
.execute().parse();

      final StringBuffer commentData = new StringBuffer();
docTotal.traverse(new NodeVisitor() {
public void head(Node node, int depth) {
if (node instanceof Comment) {
Comment comment = (Comment) node;
commentData.append(comment.getData());
}
}
public void tail(Node node, int depth) {
}
});

docTotal contiene le informazioni da noi richieste