使用Jsoup实现java爬虫(非原创)

Posted plumlee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Jsoup实现java爬虫(非原创)相关的知识,希望对你有一定的参考价值。

1,查看页面源代码,使用css或者JQuery选择器方式或元素节点选择

例如:

技术分享图片

或者写成:Elements elements1 = Jsoup.connect("http://jb.999ask.com/jibing/ks/neike").get().select("ul.jbList li a");

 

文档的对象模型:

  • 文档由多个Elements和TextNodes组成 (以及其它辅助nodes:详细可查看:nodes package tree).
  • 其继承结构如下:Document继承Element继承Node. TextNode继承 Node.
  • 一个Element包含一个子节点集合,并拥有一个父Element。他们还提供了一个唯一的子元素过滤列表。

 

2,利用Jsoup.Parse();解析文档

parse(String html, String baseUri) 这方法能够将输入的html解析为一个新的文档 (Document),参数 baseUri 是用来将相对 URL 转成绝对URL,并指定从哪个网站获取文档。如这个方法不适用,你可以使用 parse(String html) 方法来解析成HTML字符串如上面的示例。

parseBodyFragment 方法创建一个空壳的文档,并插入解析过的HTML到body元素中。假如你使用正常的 Jsoup.parse(String html) 方法,通常你也可以得到相同的结果,但是明确将用户输入作为 body片段处理,以确保用户所提供的任何糟糕的HTML都将被解析成body元素。

Document doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();

Document.body() 方法能够取得文档body元素的所有子元素,与 doc.getElementsByTag("body")相同。

3.解析本地的HTML文件

可以使用静态 Jsoup.parse(File in, String charsetName, String baseUri) 方法: File 编码 

baseUri 参数用于解决文件中URLs是相对路径的问题。如果不需要可以传入一个空的字符串。

 

File input = new File("/tmp/input.html");创建一个File对象
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");

4.使用DOM遍历一个文档

Elements links = content.getElementsByTag("a");
for (Element link : links) {
  String linkHref = link.attr("href");
  String linkText = link.text();
}
 

     * getElementById(String id)
     * getElementsByTag(String tag)
     * getElementsByClass(String className)

 


5.设置一个元素的HTML内容

可以使用Element中的HTML设置方法具体如下:

Element div = doc.select("div").first(); // <div></div>
div.html("<p>lorem ipsum</p>"); // <div><p>lorem ipsum</p></div>
div.prepend("<p>First</p>");//div前添加html内容
div.append("<p>Last</p>");//div之后添加html内容
// 添完后的结果: <div><p>First</p><p>lorem ipsum</p><p>Last</p></div>

6.设置元素的文本内容

可以使用Element的设置方法::

 

Element div = doc.select("div").first(); // <div></div>

 

div.text("five > four"); // <div>five &gt; four</div>

 

div.prepend("First ");

 

div.append(" Last");

 

// now: <div>First five &gt; four Last</div>

 

 

对于传入的文本如果含有像 <, > 等这样的字符,将以文本处理,而非HTML。







 

 

 

 

.

 















以上是关于使用Jsoup实现java爬虫(非原创)的主要内容,如果未能解决你的问题,请参考以下文章

Java 实现 HttpClients+jsoup,Jsoup,htmlunit,Headless Chrome 爬虫抓取数据

初识Java爬虫之Jsoup,提供参考代码

Java程序中使用 Jsoup 爬虫( 简单示例 )

java网络爬虫实现信息的抓取

Java实现网络爬虫

Java爬虫之HttpClient与Jsoup详解