Web Scraping se také nazývá škrábání dat, sklizeň webu nebo procházení webu, které se používá k extrahování dat z webových stránek. Webový škrabák může používat různé přístupy k extrakci informací. Například XPath, selektory CSS, vlastní filtry, navigace HTML atd. V souladu s takovými scénáři tento článek popisuje, jak programově vytvořit webový škrabák v Javě.
- Konfigurace knihovny Java Web Scraping
- Web Scraping s HTML navigací v Javě
- Web Scraping pomocí XPath Query v Javě
- Web Scraping pomocí CSS Selector v Javě
Konfigurace knihovny Java Web Scraping
Aspose.HTML for Java Podpora rozhraní API nabízí funkce stírání webu pomocí různých technik. K API můžete jednoduše přistupovat stažením souborů JAR ze stránky Stahování nebo použitím následujících konfigurací Maven v souboru pom.xml vašeho projektu:
úložiště:
<repositories>
<repository>
<id>snapshots</id>
<name>repo</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
</repositories>
Závislost:
<dependencies>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-html</artifactId>
<version>21.12</version>
<classifier>jdk17</classifier>
</dependency>
</dependencies>
Web Scraping s HTML navigací v Javě
Chcete-li procházet stránky HTML, můžete pracovat s třídou Node. Níže uvedený fragment kódu ukazuje, jak se pohybovat v dokumentu HTML v jazyce Java:
// Připravte si HTML kód
String html_code = "<span>Hello</span> <span>World!</span>";
// Inicializujte dokument z připraveného kódu
com.aspose.html.HTMLDocument document = new com.aspose.html.HTMLDocument(html_code, ".");
try {
// Získejte odkaz na prvního potomka (první SPAN) TĚLA
com.aspose.html.dom.Element element = document.getBody().getFirstElementChild();
System.out.println(element.getTextContent()); // output: Hello
// Získejte odkaz na druhý prvek SPAN
element = element.getNextElementSibling();
System.out.println(element.getTextContent()); // output: World!
} finally {
if (document != null) {
document.dispose();
}
}
Kontrola HTML dokumentu a jeho prvků v Javě
Pro navigaci po stránkách HTML můžete pracovat s metodou procházení prvků. Níže uvedená ukázka kódu vysvětluje, jak kontrolovat HTML dokumenty v Javě.
// Načtěte dokument ze souboru
String documentPath = "html_file.html";
var document = new com.aspose.html.HTMLDocument(documentPath);
{
// Získejte html prvek dokumentu
var element = document.getDocumentElement();
System.out.println(element.getTagName()); // HTML
// Získejte poslední prvek prvku html
element = element.getLastElementChild();
System.out.println(element.getTagName()); // BODY
// Získejte první prvek prvku těla
element = element.getFirstElementChild();
System.out.println(element.getTagName()); // H1
System.out.println(element.getTextContent()); // Header 1
}
Použití vlastního filtru pro Web Scraper v Javě
Můžete nastavit vlastní filtr pro přeskočení nebo přijetí konkrétních filtrů pro práci s webovou škrabkou v Javě. Níže uvedená ukázka kódu vysvětluje, jak pracovat s vlastními nebo uživatelem definovanými filtry ve webovém škrabáku pomocí Java:
public class OnlyImageFilter extends com.aspose.html.dom.traversal.filters.NodeFilter {
@Override
public short acceptNode(com.aspose.html.dom.Node n) {
// Aktuální filtr přeskočí všechny prvky kromě prvků IMG.
return "img".equals(n.getLocalName()) ? FILTER_ACCEPT : FILTER_SKIP;
}
}
Následně, po nastavení vlastního filtru, můžete snadno procházet stránkou HTML pomocí fragmentu kódu níže:
// Připravte si HTML kód
String code = " < p > Hello </p >\n" +
" <img src = 'image1.png' >\n" +
" <img src = 'image2.png' >\n" +
" <p > World ! </p >\n";
// Inicializujte dokument na základě připraveného kódu
com.aspose.html.HTMLDocument document = new com.aspose.html.HTMLDocument(code, ".");
try {
// Pro spuštění HTML navigace potřebujeme vytvořit instanci TreeWalker.
// Zadané parametry znamenají, že začne chodit z kořenového adresáře dokumentu, iteruje všechny uzly a použije naši vlastní implementaci filtru
com.aspose.html.dom.traversal.ITreeWalker iterator = document.createTreeWalker(document, com.aspose.html.dom.traversal.filters.NodeFilter.SHOW_ALL, new OnlyImageFilter());
// Použití
while (iterator.nextNode() != null) {
// Protože používáme vlastní filtr, aktuální uzel bude vždy instancí HTMLImageElement.
// Zde tedy nepotřebujeme další ověření.
com.aspose.html.HTMLImageElement image = (com.aspose.html.HTMLImageElement) iterator.getCurrentNode();
System.out.println(image.getSrc());
// výstup: image1.png
// výstup: image2.png
}
} finally {
if (document != null) {
document.dispose();
}
}
Web Scraping pomocí XPath Query v Javě
Pomocí XPath můžete vybrat různé uzly dokumentu HTML podle různých kritérií. Níže uvedený kód ukazuje, jak provádět stírání webu pomocí XPath Query v Javě:
// Připravte si HTML kód
String code = "< div class='happy' >\n" +
" <div >\n" +
" <span > Hello ! </span >\n" +
" </div >\n" +
" </div >\n" +
" <p class='happy' >\n" +
" <span > World </span >\n" +
" </p >\n";
// Inicializujte dokument na základě připraveného kódu
com.aspose.html.HTMLDocument document = new com.aspose.html.HTMLDocument(code, ".");
try {
// Zde vyhodnotíme výraz XPath, kde vybereme všechny podřízené prvky SPAN z prvků, jejichž atribut 'class' se rovná 'happy':
com.aspose.html.dom.xpath.IXPathResult result = document.evaluate("//*[@class='happy']//span",
document,
null,
com.aspose.html.dom.xpath.XPathResultType.Any,
null
);
// Iterujte přes výsledné uzly
for (com.aspose.html.dom.Node node; (node = result.iterateNext()) != null; ) {
System.out.println(node.getTextContent());
// výstup: Dobrý den
// výstup: Svět!
}
} finally {
if (document != null) {
document.dispose();
}
}
Web Scraping pomocí CSS Selector v Javě
Potřebné položky můžete vyhledávat ve webovém škrabáku pomocí selektoru CSS. Můžete zadat parametr jako selektor dotazu a potom se do webového škrabáku vrátí seznam odpovídajících selektoru. Následující ukázka kódu ukazuje, jak používat selektor CSS ve webovém škrabáku pomocí Java:
// Připravte si HTML kód
String code = "< div class='happy' >\n" +
" <div >\n" +
" <span > Hello </span >\n" +
" </div >\n" +
" </div >\n" +
" <p class='happy' >\n" +
" <span > World ! </span >\n" +
" </p >\n";
// Inicializujte dokument na základě připraveného kódu
com.aspose.html.HTMLDocument document = new com.aspose.html.HTMLDocument(code, ".");
try {
// Zde vytvoříme selektor CSS, který extrahuje všechny prvky, jejichž atribut 'class' se rovná 'happy' a jejich podřízené prvky SPAN
com.aspose.html.collections.NodeList elements = document.querySelectorAll(".happy span");
// Iterujte výsledný seznam prvků
elements.forEach(element -> {
System.out.println(((com.aspose.html.HTMLElement) element).getInnerHTML());
// výstup: Dobrý den
// výstup: Svět!
});
} finally {
if (document != null) {
document.dispose();
}
}
Závěr
V tomto článku jste prozkoumali různé metody, které lze použít k vytvoření webového škrabáku v Javě. K vytvoření webového škrabáku v Javě stačí provést několik volání API pomocí knihovny Aspose.HTML for Java. V tomto článku můžete prozkoumat techniky HTML Navigation, CSS Selector, Custom filter a XPath Query. Kromě toho nás neváhejte kontaktovat prostřednictvím fóra, pokud potřebujete další informace nebo pomoc.