回到顶部


解析一个html字符串

使用静态Jsonp.parse(String html)或者Jsoup.parse(String html,String baseUrl)
String html = "<html><head><title>First parse</title></head>"
  + "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);

parse(String html,String baseUrl)
这个方法能够将输入的HTML解析为一个新的文档(Document),参数baseUri是用来将相对url转换成绝对url,并指定从哪个网站获取文档。
也可以使用parse(String html)方法来解析html,主要解析的不是空字符串,就能返回一个结构合理的文档,其中包含至少一个head和一个body元素
一旦拥有了一个Document,我们可以使用Document中适当的方法或父类Element和Node中的方法获取对应的数据

解析一个body片段

如果有一个html片段(如一个div包含一对p标签;一个不完整的html文档)想对它进行解析
使用Jsoup.parseBodyFragment(String html);

String html = "<div><p>Lorem ipsum.</p>";
Document doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();

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

从一个URL加载一个Document

从一个网站获取和解析一个html文档,并查找其中的相关数据
解决方法:使用Jsoup.connect(String url)
Document doc = Jsoup.connect("http://example.com/").get();
String title = doc.title();

connect(String url)方法创建一个新的connection和get()取得和解析一个html文件。
如果从该url获取html时发生错误,便会抛出IOException,应适当处理

Connection接口还提供如下方法来解决特殊请求
Document doc = Jsoup.connect("http://baidu.com")
    .data("query","java")
    .userAgent("Mozilla")
    .cookie("auth","token")
    .timeout(3000)
    .post();
这个方法只支持http和https协议

从文件加载一个文档

从本地文件中解析html文档
Jsoup.parse(File in,String charsetName,String baseUri)

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

parse(File in, String charsetName, String baseUri) 
这个方法用来加载和解析一个HTML文件。如在加载文件的时候发生错误,将抛出IOException,应作适当处理。
'baseUri' 用于解决文件中URLs是相对路径的问题。如果不需要可以传入一个空的字符串。

parse(File in, String charsetName) 
它使用文件的路径做为 baseUri。 
这个方法适用于如果被解析文件位于网站的本地文件系统,且相关链接也指向该文件系统。
posted on 2018-04-14 06:44  ssgao  阅读(113)  评论(0编辑  收藏  举报