Java:
Tolka HTML

Hur man gör:

Låt oss använda Jsoup, ett praktiskt bibliotek för att arbeta med verklig HTML. Först, lägg till beroendet:

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.15.2</version>
</dependency>

Nu till den roliga delen. Så här hämtar du en webbsidas titel och skriver ut den:

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

public class HtmlParser {
    public static void main(String[] args) throws IOException {
        String url = "http://example.com";
        Document doc = Jsoup.connect(url).get();
        String title = doc.title();
        System.out.println("Titel: " + title);
    }
}

Utskrift:

Titel: Exempeldomän

Hur är det med att extrahera alla länkar?

import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

// ... inuti main eller en annan metod
Elements links = doc.select("a[href]");
for (Element link : links) {
    System.out.println("Länk: " + link.attr("href"));
}

Djupdykning

En gång i tiden blev HTML tämjt av regex-mönster, en metod både felbenägen och mardrömslik för komplexa dokument. Sen kom Jsoup i slutet av 00-talet, som erbjuder ett jQuery-liknande gränssnitt för Java för att tolka, traversera och manipulera HTML.

Jsoup är inte det enda valet. Det finns HtmlUnit för fullfjädrad webbapplikationstestning med JavaScript-stöd, men det är tyngre och mer komplicerat. För lättviktsuppgifter är Apache Commons Validator bra bara för att extrahera URL:er.

Under huven använder Jsoup en DOM-parser, som modellerar hela dokumentet i minnet som ett träd. Detta tillvägagångssätt gör det enkelt att välja och navigera HTML-strukturen. Dessutom är det förlåtande med slarvig HTML, åtgärdar problem på språng för att säkerställa robust tolkning.

Kom ihåg, när du skrapar, alltid kontrollera en webbplats robots.txt och användarvillkor för att undvika juridiska problem eller att bli IP-bannad.

Se även