原文地址:http://www.mkyong.com/java/jsoup-html-parser-hello-world-examples/

Jsoup, a HTML parser, its “jquery-like” and “regex” selector syntax is very easy to use and flexible enough to get whatever you want. Below are three examples to show you how to use Jsoup to get links, images, page title and “div” element content from a HTML page.

Download jsoup
The jsoup is available in Maven central repository. For non-Maven user, just download it from jsoup website.

pom.xml
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>

1. Grabs All Hyperlinks

This example shows you how to use jsoup to get page’s title and grabs all links from “google.com”.

HTMLParserExample1.java
package com.mkyong;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements; import java.io.IOException; public class HTMLParserExample1 { public static void main(String[] args) { Document doc;
try { // need http protocol
doc = Jsoup.connect("http://google.com").get(); // get page title
String title = doc.title();
System.out.println("title : " + title); // get all links
Elements links = doc.select("a[href]");
for (Element link : links) { // get the value from href attribute
System.out.println("\nlink : " + link.attr("href"));
System.out.println("text : " + link.text()); } } catch (IOException e) {
e.printStackTrace();
} } }

Output

title : Google

link : http://www.google.com.my/imghp?hl=en&tab=wi
text : Images link : http://maps.google.com.my/maps?hl=en&tab=wl
text : Maps //omitted for readability
Note
It’s recommended to specify a “userAgent” in Jsoup, to avoid HTTP 403 error messages.

Document doc = Jsoup.connect("http://anyurl.com")
.userAgent("Mozilla")
.get();

2. Grabs All Images

The second example shows you how to use the Jsoup regex selector to grab all image files (png, jpg, gif) from “yahoo.com”.

HTMLParserExample2.java
package com.mkyong;

package com.mkyong;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements; import java.io.IOException; public class HTMLParserExample2 { public static void main(String[] args) { Document doc;
try { //get all images
doc = Jsoup.connect("http://yahoo.com").get();
Elements images = doc.select("img[src~=(?i)\\.(png|jpe?g|gif)]");
for (Element image : images) { System.out.println("\nsrc : " + image.attr("src"));
System.out.println("height : " + image.attr("height"));
System.out.println("width : " + image.attr("width"));
System.out.println("alt : " + image.attr("alt")); } } catch (IOException e) {
e.printStackTrace();
} } }

Output

src : http://l.yimg.com/a/i/mntl/ww/events/p.gif
height : 50
width : 202
alt : Yahoo! src : http://l.yimg.com/a/i/ww/met/intl_flag_icons/20111011/my_flag.gif
height :
width :
alt : //omitted for readability
 

3. Get Meta elements

The last example simulates an offline HTML page and use jsoup to parse the content. It grabs the “meta” keyword and description, and also the div element with the id of “color”.

HTMLParserExample3.java
package com.mkyong;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document; public class HTMLParserExample3 { public static void main(String[] args) { StringBuffer html = new StringBuffer(); html.append("<!DOCTYPE html>");
html.append("<html lang=\"en\">");
html.append("<head>");
html.append("<meta charset=\"UTF-8\" />");
html.append("<title>Hollywood Life</title>");
html.append("<meta name=\"description\" content=\"The latest entertainment news\" />");
html.append("<meta name=\"keywords\" content=\"hollywood gossip, hollywood news\" />");
html.append("</head>");
html.append("<body>");
html.append("<div id='color'>This is red</div> />");
html.append("</body>");
html.append("</html>"); Document doc = Jsoup.parse(html.toString()); //get meta description content
String description = doc.select("meta[name=description]").get(0).attr("content");
System.out.println("Meta description : " + description); //get meta keyword content
String keywords = doc.select("meta[name=keywords]").first().attr("content");
System.out.println("Meta keyword : " + keywords); String color1 = doc.getElementById("color").text();
String color2 = doc.select("div#color").get(0).text(); System.out.println(color1);
System.out.println(color2); } }

Output

Meta description : The latest entertainment news
Meta keyword : hollywood gossip, hollywood news
This is red
This is red

4. Grabs Form Inputs

This code snippets shows you how to use Jsoup to grab HTML form inputs (name and value). For detail usage, please refer to this automate login a website with Java.

public void getFormParams(String html){

	Document doc = Jsoup.parse(html);

	//HTML form id
Element loginform = doc.getElementById("your_form_id"); Elements inputElements = loginform.getElementsByTag("input"); List<String> paramList = new ArrayList<String>();
for (Element inputElement : inputElements) {
String key = inputElement.attr("name");
String value = inputElement.attr("value");
} }

5. Get Fav Icon

This code shows you how to use Jsoup to page’s favourite icon.

jSoupExample.java
package com.mkyong;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element; public class jSoupExample { public static void main(String[] args) { StringBuffer html = new StringBuffer(); html.append("<html lang=\"en\">");
html.append("<head>");
html.append("<link rel=\"icon\" href=\"http://example.com/image.ico\" />");
//html.append("<meta content=\"/images/google_favicon_128.png\" itemprop=\"image\">");
html.append("</head>");
html.append("<body>");
html.append("something");
html.append("</body>");
html.append("</html>"); Document doc = Jsoup.parse(html.toString()); String fav = ""; Element element = doc.head().select("link[href~=.*\\.(ico|png)]").first();
if(element==null){ element = doc.head().select("meta[itemprop=image]").first();
if(element!=null){
fav = element.attr("content");
}
}else{
fav = element.attr("href");
}
System.out.println(fav);
} }

Output

http://example.com/image.ico

jsoup HTML parser hello world examples--转的更多相关文章

  1. Jsoup代码解读之四-parser

    Jsoup代码解读之四-parser 作为Java世界最好的HTML 解析库,Jsoup的parser实现非常具有代表性.这部分也是Jsoup最复杂的部分,需要一些数据结构.状态机乃至编译器的知识.好 ...

  2. Jsoup 解析 HTML

    Jsoup 文档 方法 要取得一个属性的值,可以使用Node.attr(String key) 方法 对于一个元素中的文本,可以使用Element.text()方法 对于要取得元素或属性中的HTML内 ...

  3. Jsoup代码解读之六-防御XSS攻击

    Jsoup代码解读之八-防御XSS攻击 防御XSS攻击的一般原理 cleaner是Jsoup的重要功能之一,我们常用它来进行富文本输入中的XSS防御. 我们知道,XSS攻击的一般方式是,通过在页面输入 ...

  4. HtmlUnit+Jsoup 解决爬虫无法解析执行javascript的问题

    本人最近在研究爬虫.作为一个新手.研究了些爬虫框架,发现所有开源的爬虫框架很多,功能也很齐全,但唯独遗憾的是,目前还没有发现那个爬虫对js完美的解释并执行.看了浅谈网络爬虫爬js动态加载网页(二)之后 ...

  5. Jsoup的学习

    一 . 什么是jsoup jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来 ...

  6. 【转】jsoup的使用

     Jsoup的使用   jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法 ...

  7. Java | 技术应用 | 利用Jsoup处理页面

    根据微信公众号的推文链接地址,对文章内容进行爬取,利用jsoup解析文章源代码,加上结合xpth提取文文章信息, 利用正则表达式读取文章发表时间. Jsoup <!-- jsoup HTML p ...

  8. Java爬虫利器HTML解析工具-Jsoup

    Jsoup简介 Java爬虫解析HTML文档的工具有:htmlparser, Jsoup.本文将会详细介绍Jsoup的使用方法,10分钟搞定Java爬虫HTML解析. Jsoup可以直接解析某个URL ...

  9. JSOUP 爬虫

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.mavne 依赖: <!--html 解析 : jsoup HTML parser library @ ...

随机推荐

  1. 决策实验(2)分水岭&哄骗实验

    转载请注明http://www.cnblogs.com/igoslly/p/6824544.html 史密斯实验II PART I 分水岭实验 两种选项 A 50%没钱,50% 45元 B 获取固定数 ...

  2. python爬虫:读取PDF

    下面的代码可以实现用python读取PDF,包括读取本地和网络上的PDF. pdfminer下载地址:https://pypi.python.org/packages/source/p/pdfmine ...

  3. php 单例模式与常驻服务

    运行机制使得每个PHP页面被解释执行后,所有的相关资源都会被回收.也就是 说,PHP在语言级别上没有办法让某个对象常驻内存.在PHP中,所有的变量都是页面级的,无论是全局变量,还是类的静态成员,都会在 ...

  4. Zookeeper 使用

    转自:https://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ 安装和配置详解 本文介绍的 Zookeeper 是以 3.2. ...

  5. linux基础正则

    1.^word #匹配word开头的内容,vi/vim编辑器里^代表一行的开头. 2.word$ #匹配以word结尾的内容,vi/vim编辑器里$代表一行的结尾. 3.^$ #表示空行 4.. #代 ...

  6. 运用cat EOF添加文件

    [root@fyc14 nginx1]# cat <<EOF > /etc/yum.repos.d/nginx.repo> [nginx]> name=nginx rep ...

  7. Tensorflow高效读取数据的方法

    最新上传的mcnn中有完整的数据读写示例,可以参考. 关于Tensorflow读取数据,官网给出了三种方法: 供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码 ...

  8. 巴塞尔问题(Basel problem)的多种解法——怎么计算$\frac{1}{1^2}+\frac{1}{2^2}+\frac{1}{3^2}+\cdots$ ?

    (PS:本文会不断更新) $\newcommand\R{\operatorname{Res}}$ 如何计算$\zeta(2)=\frac{1}{1^2}+\frac{1}{2^2}+\frac{1}{ ...

  9. Charles抓包工具抓取HTTS请求

    1. 移动端(手机)配置证书 1.1 进入Charles,点击Help,选择SSL Proxying --> 选择安装手机证书 1.2 在Charles弹框提示中,按照提示内容,进入手机进入下图 ...

  10. 环境搭建Selenium2+Eclipse+Java+TestNG_(一)

    第一步  安装JDK 第二步 下载Eclipse 第三步 在Eclipse中安装TestNG 第四步 下载Selenium IDE.SeleniumRC.IEDriverServer 第五步 下载Fi ...