Jsoup解析HTML基础用法

Jsoup可以解析网络和本地HTML,常用一般为通过网址解析网页,解析网页可以通过get和post方法获取网页内容。

解析本地HTML:
String html = "First parse

Parsed HTML into a doc.

"; Document document = Jsoup.parse(html);

当然,即便你提供的HTML格式不完整,对Jsoup而言,并不是什么问题。

获取网页HTML:
  • 使用get方法
try {
         Document document = Jsoup.connect("http://www.jianshu.com/").get();
     } catch (IOException e) {
          e.printStackTrace();
     }
  • 使用post方法
 try {
         //使用post方法请求网页时,其data()方法支持Map传参,同时也可以添加userAgent(用户认证)以及cookie
         Document document = Jsoup.connect("http://www.jianshu.com/")
                 .data("key", "value")
                 .timeout(5000)
                 .post();
     } catch (IOException e) {
         e.printStackTrace();
     }

注意:以上两个方法都需要在异步线程中进行。


Jsoup中一些方法的应用:
  • 常用方法select()

通过此方法可以查询用id或者class标志的HTML标签,如果是id,select方法中的参数传#id(例:select(#content)),如果是class,则为 标签名.class名(例:select(div.content))

  • getElementById()

获取HTML文档中指定id的Element,HTML文档中Id的定义是唯一的,因此通过此方法获取的是一个唯一的元素。

Element element = getElementById("content");
  • getElementsByTag()

获取HTML文档中指定标签名的所有元素,得到的以一个Elements集合。

Elements elements = getElementsByTag("div");
  • getElementsByClass()

获取HTML文档中指定class名的所有元素

Elements elements = getElementsByClass("content");
  • getElementsByAttribute()/attr()

获去指定属性名的所以Element,例如获取HTML文档下的所有图片链接

 List imageUrls = new ArrayList<>();
 Elements elements = document.getElementsByAttribute("data-src");
 for (Element element : elements) {
      String imageUrl = element.select("img").first().attr("data-src");
      imageUrls.add(imageUrl);
 }
  • first()

很多时候我们通过getElemetnts...()方法获取的为一个Element集合,这时候我们就可以通过first()方法获取其第一个Element。

Element element = document.select("div.content").first();
  • text()

如果我们需要获取具体标签下的文本内容就可以使用text()方法,例如我们需要获取div标签class名为content下的h1标签中的内容

String text = document.select("div.content").first().getElementsByTag("h1").first().text();

其它更多用法详见Jsoup官网:https://jsoup.org/

你可能感兴趣的:(Jsoup解析HTML基础用法)