在爬虫技术中,可以分为两个阶段:
一、获取到目标地址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从网上请求爬取过来的。