在爬虫技术中,可以分为两个阶段:
一、获取到目标地址url的html内容
二、解析获取到的html内容并选择想要的片段,比如标题、作者、内容等信息
第一个阶段,我们在java里面可以使用httpclient来实现,通过httpclient可以获取到目标地址的html内容,这我们在之前已经说过很多了,如何从获取到的html内容中摘取自己想要的片段呢?使用到的技术可以有很多种,我们在这里介绍一个,叫做jsoup的东西。
引入jsoup:
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.10.3</version> </dependency>使用jsoup很简单,我们举个例子:
Document document = Jsoup.parse(html); Elements divTags = document.select("div.text"); int size = divTags.size(); for (int i = 0; i < size; i++) { Element element = divTags.get(i); System.out.println(element.text()); }上边简单的几行代码的作用是获取含有text这个css类的div。其中html指的是html字符串,可以是一个完整的html(包含<!DOCTYPE html>,head....即普通的html文档),也可以是html片段,我们可以通过这个html字符串来创建一个org.jsoup.nodes.Document对象,通过这个document对象的select方法,select方法定义如下:
Elements org.jsoup.nodes.Element.select(String cssQuery)cssQuery可以是任何合法的css选择器,比如我们上边写的div.text。
好了,使用jsoup就是这么简单,希望能够帮到你。下面再来个实例:
java代码:
import java.io.File; import org.apache.commons.io.FileUtils; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class App { public static void main(String[] args) throws Exception{ try { String html = FileUtils.readFileToString(new File("D:\\zhao\\b.html"), "utf-8"); Document document = Jsoup.parse(html); Elements divTags = document.select("div.text"); int size = divTags.size(); for (int i = 0; i < size; i++) { Element element = divTags.get(i); System.out.println(element.text()); } } catch (Exception e) { e.printStackTrace(); } } }执行结果:
这里要理解,创建jsoup的document对象的参数是html字符串即可,而你这个HTML字符串可以是从本地文件中读取过来的,也可以上httpclient从网上请求爬取过来的。