Android Studio下的简单网页解析

一.导入数据

导入前添加依赖
implementation 'org.jsoup:jsoup:1.11.3'
使用字符串导入
String html = "<html><head><title>这是一个title</title></head>"
+"<body><p>这里是一个html里的内容</p></body></html>";
Document document = Jsoup.parse(html);
从网址导入

导入okhttp3依赖

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.squareup.okhttp3:okhttp:4.6.0'
}

通过URL来获取网页文本数据

public static String getHtml() throws Exception {
OkHttpClient okHttpClient;
okHttpClient=new OkHttpClient();
Request request = new Request.Builder()
// .addHeader() <---在这个里面加Cookie,Host等
.url("https://www.baidu.com")
.build(); Response response = okHttpClient.newCall(request).execute();
String result = response.body().string();
return result; }

然后直接调用

Document document = Jsoup.parse(getHtml());
从文件中导入
String html = ReadFile.readToString("HTML文本.html");
Document document = Jsoup.parse(html);

二.数据解析

将Document类型的数据转化为Element类型
Element mElement = document.body(0);

这句话的意思在document里寻找到 <body> 标签,以Element类型返回里面的内容(包括<body>)

如果你需要获取的数据不存放在<body>里,则使用以下几种

1.getElementsByTag--->通过标签名寻找

例:寻找第一个<table>标签

Element mElement = document.getElementsByTag("table").eq(0).get(0);

2.getElementById--->通过ID寻找

例:寻找id="student"的标签

Element mElement = document.getElementsById("student").get(0);

3.getElementsByClass--->通过Class属性寻找

例:寻找Class="test"的标签

Element mElement = document.getElementsByClass("test").get(0);

4.getElementsByAttributeValue--->通过标签属性寻找

例:寻找Class="test"的标签

Element mElement = document1.getElementsByAttributeValue("Class","test").get(0);

三.数据处理

Element--->String

mElement.text()
//或者↓
mElement.html()

不同的是test返回的是标签里的内容,html返回的是html的格式的文本

例如下面

public static void getStr() throws Exception {
OkHttpClient okHttpClient;
okHttpClient = new OkHttpClient();
Request request = new Request.Builder()
.url("https://www.baidu.com")
.build(); Response response = okHttpClient.newCall(request).execute();
String result = response.body().string();
Document document = Jsoup.parse(result);
String s1 = document.getElementsByTag("noscript").text();
String s2 = document.getElementsByTag("noscript").html(); System.out.println("test()返回的:"+s1+"\n");
System.out.println("html()返回的:"+s2); }

返回的结果:

使用字符串方法来处理数据

字符串切割

String.split("\\s+");

根据下标切割字符串

String.substring(0,string.length()-1);

删除前后空格

String.trim();

字符串的内容替换

String.replace("原来的内容","替换的内容");

字符串类型的转化

int.toString;
//或者↓
String.valueof(int);

判断是否存在特定字

String.contains("特定字");

判断是否为空

String.isEmpty();

Android Studio下的简单网页解析的更多相关文章

  1. Android Studio下导出jar包和aar包

    Android Studio下导出jar包和aar包 jar包和aar包的区别 步骤 1. 创建Android工程 创建工程比较简单,不错复述 2. 创建一个Library(Module) 创建了一个 ...

  2. Android Studio下HierarchyViewer的使用

    什么是HierarchyViewer Hierarchy Viewer是随AndroidSDK发布的工具,位置在tools文件夹下,名为hierarchyviewer.bat.它是Android自带的 ...

  3. Android studio 下 JNI 开发实例

    在AS中进行 NDK 开发之前,我们先来简单的介绍几个大家都容易搞懵的概念: 到底什么是JNI,什么是NDK? 何为“交叉编译”? 先看什么是 JNI?JNI 的全称就是 Java Native In ...

  4. Android Studio下jni应用

    最近在将一个小应用从eclipse开发迁移到android studio,程序中有native代码实现,在eclipse是靠Android.mk这么个mk文件来组织编译的,但到android stud ...

  5. 解决Android Studio下Element layer-list must be declared问题

    近期将一个项目从Eclipse转到Android Studio. 项目中使用了环信demo中的一些xml资源,转换后发现color资源目录下诸如layer-list或者shape等标签报Element ...

  6. Android studio下gradle Robolectric单元测试配置

    android studio下gradle Robolectric单元测试配置 1.Robolectric Robolectric是一个基于junit之上的单元测试框架.它并不依赖于Android提供 ...

  7. Android studio 下JNI编程实例并生成so库

    Android studio 下JNI编程实例并生成so库 因为公司需要为Android相机做美颜等图像后期处理,需要使用JNI编程,最近学了下JNI,并且在Android Studio下实现了一个小 ...

  8. Android Studio下打jar包

    在我们使用Eclipse时,我们常常使用的第三方类库文件大多都是jar包形式,用起来很方便.但是jar包只能打包class文件,对于Android UI类库而言,我们常常需要打包资源文件,对于界面不多 ...

  9. Android Studio下多渠道打包

    Android Studio下实现多渠道打包 直接上步骤 步骤 1. 清单文件添加属性(以友盟统计为例) 在application标签下添加meta-data属性 <application -- ...

随机推荐

  1. django路径问题

    1. 初始化项目结构 2.创建Django项目 使用pycharm打开项目 1.右击---->编辑配置 > 2.文件---->设置 > 3.文件---->设置 > ...

  2. Python使用协程进行爬虫

    详情点我跳转 关注公众号"轻松学编程"了解更多. 1.协程 协程,又称微线程,纤程.英文名Coroutine. 协程是啥 ?? 首先我们得知道协程是啥?协程其实可以认为是比线程更小 ...

  3. Win10 Terminal + WSL 2 安装配置指南,精致开发体验

    自从 Windows Terminal 正式发布后就再没有用过 Windows 系统自带的终端了.主要是 Terminal 简洁且灵活,更重要的是支持特殊字体,通过一些简单的配置可以使得终端看起来更舒 ...

  4. C# 字符串处理类

    using System;using System.Collections.Generic;using System.Text;using System.Text.RegularExpressions ...

  5. os00

    - 运行状态:占用处理机资源运行,处于此状态的进程数小于等于CPU数# 操作系统* 进程和线程    * [进程和线程有什么区别?](#进程和线程有什么区别)    * [进程间通信有哪些方式?](# ...

  6. Doctrine\ORM\QueryBuilder 源码解析之 where

    背景 最近有需求实现类似于 QueryBuilder 的谓词语句,就去翻看了它的源码.先看两个例子 例子1 $qb = $em->createQueryBuilder(); $qb->se ...

  7. BIM与GIS融合的意义——从智慧工地到智慧城市

    随着智慧城市概念的发展,BIM与GIS融合的概念深入人心,通过整合BIM的参数化描述建筑组件性质的特性与GIS宏观的几何空间概念,将 BIM 描述单体建筑物的特性通过 GIS 拓展至三维城市. BIM ...

  8. 【】JSON和JSONP

    http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html http://www.cnblogs.com/do ...

  9. 激情的来源 Imagine how much you love it !

    激情来自哪里?我想可能我找到了,精髓就在那个标题! 想象你有多么爱它!你就会爱上他,想象你有多么喜欢某一个东西,你很有可能就喜欢上他,着手去了解他,接触他. 如果带着这种想象状态的激情,工作和学习会有 ...

  10. Docker - 解决容器内获取的时间和主机的时间不一样的问题

    问题背景 分别在容器和主机下执行 date 命令 可以看到,时间是完全不一样的 解决方案 在运行容器时,挂载 /etc/localtime  目录 docker run -d -v /etc/loca ...