jsoup HTML parser hello world examples--转
原文地址: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.
<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”.
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
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”.
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”.
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.
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
相关文章
- 优化 html 标签 为何能用HTML/CSS解决的问题就不要使用JS?
- 工作总结 @Html 辅助方法 为 生成的 标签设置元素属性 htmlAttributes 一个对象,其中包含要为该元素设置的 HTML 特性。
- Word处理控件Aspose.Words功能演示:使用 Java 将 Word 文档 (DOC/DOCX) 转换为 HTML
- 【前端学习之HTML&CSS进阶篇】-- HTML第三篇 -- 表单元素
- 【前端学习之HTML&CSS】-- CSS第六篇 -- 视觉格式化模型之一 常规流
- 【前端学习之HTML&CSS】-- CSS第一篇 -- 为网页添加样式
- 【前端学习之HTML&CSS】-- HTML第六篇 -- a元素与路径
- 今天中了一个脚本病毒。把我的所有 html 加了 vbs 脚本,WriteData 是什么鬼?
- C# HTML 当前页面嵌套另一个页面
- HTML-Html开发之Viewport的使用
- 《HTML、CSS、JavaScript 网页制作从入门到精通》——第6章 使用表格
- 增强基本选择器[selector_3.html]
- html--块
- HTML--三种样式插入方法--链接---表格---列表
- HTML-元素
- 前端静态资源版本更新与缓存之——通过gulp 在原html文件上自动化添加js、css版本号
- HTML 背景图片自适应
- html之file标签 --- 图片上传前预览 -- FileReader
- sublime快捷方式--快速生成HTML结构语法
- html练习(3)
- SpringBoot直接访问templates下的html问题
- html-rem与px的转换
- 【网络爬虫】学习笔记:html.parser、lxml、html5lib 三种解析器的区别
- Three.js Example 注解 —— webgl_geometry_cube.html