HTML+CSS入门 如何使用Kotlin 和 Jsoup库实现的HTML Parser库
沉沙 2018-06-01 来源 : 阅读 1097 评论 0

摘要:当我们有了一个网页的源代码HTML,这个时候我们很想像在JavaScript中的DOM API一样操作解析这个页面的元素。希望阅读本篇文章以后大家有所收获,帮助大家HTML+CSS入门。

当我们有了一个网页的源代码HTML,这个时候我们很想像在JavaScript中的DOM API一样操作解析这个页面的元素。

比如说,百度首页,我们在浏览器console中执行js

document.getElementsByTagName("title")[0].innerHTML

我们会得到

百度一下,你就知道

我们使用后端代码怎样搞呢?

有很多API库。

我们使用Kotlin + Jsoup简单实现一个玩玩。

效果是

fun main(args: Array<String>) {

    val url = URL("https://www.baidu.com/")

    val html = url.readText()

 

    //document.getElementsByTagName("title")[0].innerHTML

    val elements = HTMLParser.getElementsByTag(html, "title")

    elements.eachText().forEach { println(it) }

 

    val form = HTMLParser.getElementsById(html, "form")

    form.allElements.forEach {

        println(it.html())

    }

 

}

输出

百度一下,你就知道

<input type="hidden" name="bdorz_come" value="1">

<input type="hidden" name="ie" value="utf-8">

<input type="hidden" name="f" value="8">

<input type="hidden" name="rsv_bp" value="1">

<input type="hidden" name="rsv_idx" value="1">

<input type="hidden" name="tn" value="baidu">

<span class="bg s_ipt_wr"><input id="kw" name="wd" class="s_ipt" value maxlength="255" autocomplete="off" autofocus></span>

<span class="bg s_btn_wr"><input type="submit" id="su" value="百度一下" class="bg s_btn" autofocus></span>

 


<input id="kw" name="wd" class="s_ipt" value maxlength="255" autocomplete="off" autofocus>

 

<input type="submit" id="su" value="百度一下" class="bg s_btn" autofocus>

闲话休絮,直接进入正题。

添加库依赖

    // https://mvnrepository.com/artifact/org.jsoup/jsoup

    compile group: 'org.jsoup', name: 'jsoup', version: '1.10.3'

写Kotlin应用工具类

package com.easy.kotlin

import org.jsoup.Jsoupimport org.jsoup.nodes.Elementimport org.jsoup.select.Elementsimport java.net.URL

object HTMLParser {

    fun getElementsByAttributeValue(html: String, attribute: String, name: String): Elements {

        val document = Jsoup.parse(html)

        return document.html(html).getElementsByAttributeValue(attribute, name)

    }

 

    fun getElementsByClass(html: String, className: String, name: String): Elements {

        val document = Jsoup.parse(html)

        return document.html(html).getElementsByClass(className)

    }

 

    fun getElementsByTag(html: String, tagName: String): Elements {

        val document = Jsoup.parse(html)

        return document.html(html).getElementsByTag(tagName)

    }

 

    fun getElementsById(html: String, id: String): Element {

        val document = Jsoup.parse(html)

        return document.html(html).getElementById(id)

    }

 

 

}

好了,收工。

本文由职坐标整理并发布,了解更多内容,请关注职坐标WEB前端HTML/CSS频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程