java解析html jsoup_2020-06-02 jsoup java解析html

AJsoup

AJsoup 模块是快速将html 转换成bean 类似gson转换

使用前提你了解jsoup并且了解jsoup的Select

Gradle

compile 'com.github.zdongcoding:ajsoup:0.1.0'

Maven

com.github.zdongcoding

ajsoup

0.1.0

pom

使用方法如下:

bean.java

@Select(select = "body")

public class HomeBean {

@Select(select = "div > div > div.listbox")

public HotTopTabBean hotTopTabBean; //热门数据

@Select(select = "div#nav > ul > li[id]", attr = "id")

public Map navBeans;

@Select(select = "div#nav-under > ul >li:has(a)") //排除无

public List navUnderBeans;

@Select(select = "div#body > div.left.noborder.clearfix.block1 > ul")

public List latests;

@Select(select = "div#header-in > div > ul#hot-words > li")

public List searchbeans;

}

String html=....;

HomeBean bean=AJsoupReader.deserialize(Jsoup.parse(html), HomeBean.class);

AJsoup---->Converter-Ajsoup

使用过Retrofit 一看这个名字就知道做什么的

Gradle

compile 'com.github.zdongcoding:converter-ajsoup:0.1.0'

Maven

com.github.zdongcoding

converter-ajsoup

0.1.0

pom

使用方法:

Api.java

public interface Api {

@GET("{url}")

Observable getPage(@Path(value = "url",encoded = true) String url);

}

api = new Retrofit.Builder().baseUrl(baseUri)

.addConverterFactory(JsoupConverterFactory.create())

.addConverterFactory(ScalarsConverterFactory.create())

.addCallAdapterFactory(RxJavaCallAdapterFactory.create())

.build().create(Api.class);

api.getPage("").subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Subscriber() {

@Override

public void onCompleted() {

}

@Override

public void onError(Throwable e) {

}

@Override

public void onNext(HomeBean homeBean) {

view.setText(homeBean.toString());

}

});

选择器概要(Selector overview)

Tagname:通过标签查找元素(例如:a)

ns|tag:通过标签在命名空间查找元素,例如:fb|name查找fb:name元素

id:通过ID查找元素,例如#logo

.class:通过类型名称查找元素,例如.masthead

[attribute]:带有属性的元素,例如[href]

[attr]:带有名称前缀的元素,例如[data-]查找HTML5带有数据集(dataset)属性的元素

[attr=value]:带有属性值的元素,例如[width=500]

[attr^=value],[attr$=value],[attr=value]:包含属性且其值以value开头、结尾或包含value的元素,例 如[href*=/path/]

[attr=regex]:属性值满足正则表达式的元素,例如img[src=(?i).(png|jpe?g)]

:所有元素,例如

选择器组合方法

el#id::带有ID的元素ID,例如div#logo

el.class:带类型的元素,例如. div.masthead

el[attr]:包含属性的元素,例如a[href]

任意组合:例如a[href].highlight

ancestor child:继承自某祖(父)元素的子元素,例如.body p查找“body”块下的p元素

parent > child:直接为父元素后代的子元素,例如: div.content > pf查找p元素,body > * 查找body元素的* 直系子元素

siblingA + siblingB:查找由同级元素A前导的同级元素,例如div.head + div

siblingA ~ siblingX:查找同级元素A前导的同级元素X例如h1 ~ p

el, el, el:多个选择器组合,查找匹配任一选择器的唯一元素,例如div.masthead, div.logo

伪选择器(Pseudo selectors)

:lt(n):查找索引值(即DOM树中相对于其父元素的位置)小于n的同级元素,例如td:lt(3)

:gt(n):查找查找索引值大于n的同级元素,例如div p:gt(2)

:eq(n) :查找索引值等于n的同级元素,例如form input:eq(1)

:has(seletor):查找匹配选择器包含元素的元素,例如div:has(p)

:not(selector):查找不匹配选择器的元素,例如div:not(.logo)

:contains(text):查找包含给定文本的元素,大小写铭感,例如p:contains(jsoup)

:containsOwn(text):查找直接包含给定文本的元素

:matches(regex):查找其文本匹配指定的正则表达式的元素,例如div:matches((?i)login)

:matchesOwn(regex):查找其自身文本匹配指定的正则表达式的元素

注意:上述伪选择器是0-基数的,亦即第一个元素索引值为0,第二个元素index为1等

主要用到以上字段

不需要服务器 就可以做一个快速做一个客户端

完毕,就是这么简单

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

串口工具securecrt_SecureCRT配置华为交换机部分命令

点上方蓝字“工控先生”免费快速关注本文由“135编辑由于工作需要,昨天临时需要从华为的光电交换机上面的console口查看一些端口的状态等,现整理如下,有需要的可以参考一下:硬件准备串口线,华为交换机连接将RJ45连接到…

java byte 二维数组_[编程入门]二维数组的转置-题解(Java代码)

解题思路:注意事项:参考代码:import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int[][] a new int[3][3];for(byte i 0; i for(byte j 0;j a[i][j] scanner.nextInt();}}for(byte i 1; i i…

如何让nginx执行python代码_生产环境部署Python语言代码(django+uwsgi+nginx)

本文主要向大家介绍了生产环境部署Python语言代码(djangouwsginginx),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。基础环境不做介绍,在django开发web项目完成后,一直使用django自带的服务器进行调试&#xff1a…

天天向上续python3.3_Linux 配置系列 四 python3

一、环境准备JDK版本: jdk1.8; 操作系统: centos 7.6 ;Python::3.7.7; tomcat: apache-tomcat-8.5.5;二、配置python32.1 python3依赖包yum install gcc patch libffi-devel python-…

micropython用什么编译_micropython开发者指南

Authorshaniadolphin获取git工程mkdir micropythoncd micropythongit clone https://github.com/micropython/micropython.gitgit submodule update --init运行的结果如下:dolphinDESKTOP-DR5OKOG:/mnt/h/proj/micropython$ cd micropython/dolphinDESKTOP-DR5OKOG:…

java 跳转虚拟目录_java tomcat虚拟目录的深入了解

我们知道,Web网站中的内容(包括网页,图片,音频文件等)一般都存放在App的目录下。但随着网站内容的不断丰富,用户需要把不同层次的内容组织成网站的子目录。我们通常的做法是在网站主目录下新建子目录,并把相关的内容放…

redis工具类_SpringBoot 操作 Redis 数据

SpringBoot 操作 Redis 数据简介 Redis 是一个开源的NoSQL数据库,基于内存的键值存储,速度快。Redis 支持数据结构,如字符串,散列,列表,集和带范围查询的有序集。5种主要数据类型:字符串类型 …

java判断日期是否是同一周_JAVA里面怎样判断一个日期是否是星期六或者星期天,给出原代码,多谢!!!!!!!!!!...

分数全部奉上。|void test2(){String tmp "2001-09-02";SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd");try {Date myDate sdf.parse(tmp);Calendar myCalendar Calendar.getInstance();myCalendar.setTime(myDate);int i myCalendar.get(…

python中继承是什么意思_Python面向对象中的继承是什么意思

Python面向对象中的继承是什么意思发布时间:2020-11-09 14:05:42

python ansible模块_ansible常用模块

一、ansible常用模块模块是Ansible执行的最小单位,可以是由Python编写,也可以是Shell编写,也可以是由其他语言编写。一、ping模块测试连接可通性,没有参数。通的话返回pong。1、使用示例ansible all -m ping1、可通,返…

java断点续传 框架_java实现断点续传

用java的URL实现了一个简单的断点续传的列子,不为别的,假如你对断点续传不了解一看就明白了呵呵,算不上高深啊package test;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.io.Ra…

python大文件排序_Python实现大文件排序的方法

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云文件存储NAS是一个可共享访问&#xf…

python入门到实践试题及答案_python编程:入门到实践练习答案

【实例简介】书本《python编程:入门到实践》的课后练习答案【实例截图】【核心代码】练习答案├── Solutions - Chapter 10.docx├── Solutions - Chapter 11.docx├── Solutions - Chapter 15.docx├── Solutions - Chapter 16.docx├── Solutions - Cha…

java年份换算_java中日期的换算处理

JAVA8中的日期API是JSR-310的实现,并且是工作在ISO-8601日历系统基础上的,但我们也可以在非ISO的日历上。JDK8的日期API大致分为以下几个包:1 java.time包:JDK8中的基础包,所有常用的基础类都是这个包的一部分&#xf…

python地理空间_Python批量下载地理空间数据云数据!Python无所不能!-站长资讯中心...

模拟登录这里要用到两个包:requests和json。requests使用前得先安装:pip install requests。In [3]:进群:548377875 即可获取数十套PDF哦!import requestsimport json打开地理空间数据云的登录页面。按F12进入开发者工具台&…

mysql 占用swap_查看swap占用情况

查看swap被占用的情况#!/bin/bash# Get current swap usage for all running processes# Erik Ljungstrom 27/05/2011# http://northernmost.org/blog/find-out-what-is-using-your-swap/SUM0OVERALL0for DIR in find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]&q…

python37.dll可能与您正在运行_模块可能与您正在运行的Windows版本不兼容。检查该模块是否与regsvr32.exe的x86或x64...

今天一个网友群里留言,他win8的系统,下载我们的软件无法正常运行,原来他的win8是64位的系统,而我们的软件是32位,而且这个软件还需要一个dll文件,没有注册就无法使用,参考下面的方法解决了1.把T…

java api math_JAVA 函数 Math API

JAVA 函数 Math APIMath.PI 记录的圆周率Math.E 记录e的常量Math中还有一些类似的常量,都是一些工程数学常用量。Math.abs() 求绝对值Math.sin() 正弦函数Math.asin() 反正弦函数Math.cos() 余弦函数Math.acos() 反余弦函数Math.tan() 正切函数Math.atan() 反正切函…

python包的init文件_Python模块包中__init__.py文件功能分析

本文实例讲述了Python模块包中__init__.py文件功能。分享给大家供大家参考,具体如下:用django做开发已经一年多的时间,但基本没注意python模块中__init__.py文件存在的意义,偶然看到对它的介绍吓一大跳,这个文件太重要…

java obervable_RxJava中Observable,Completable和Single之间有什么区别

Observable 是通用ReactiveX构建块,它是随时间发送值的事件源 . (因此存在ReactiveX扩展到的每种语言)简而言之,Observable事件是:onNext *(onCompleted | onError)? /(*零或更多? - 零或1)Single和Completable是RxJav…