Android Studio下的简单网页解析

一.导入数据

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

导入okhttp3依赖

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

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

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

然后直接调用

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

二.数据解析

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

三.数据处理

Element--->String

  1. mElement.text()
  2. //或者↓
  3. mElement.html()

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

例如下面

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

返回的结果:

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

字符串切割

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

根据下标切割字符串

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

删除前后空格

  1. String.trim();

字符串的内容替换

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

字符串类型的转化

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

判断是否存在特定字

  1. String.contains("特定字");

判断是否为空

  1. 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. ES6 小记

    1.let & const let:相当于var,不同的是没有变量提升,且只在声明的作用域内有效(新增了块级作用域). Const: 声明一个静态场量,一旦声明,常量的值就不能改变. for. ...

  2. 一年前,我来到国企搞IT

    ​ 2020.11.01日,这一天是我加盟xxx国企的一年整,这篇分享本来是要提前写的,不过由于前段时间确实繁忙,一直没有机会提笔.今天简单和大家分享下我在国企的一些工作内容,感悟等等,希望能给那些对 ...

  3. 4 urllib和urllib2的区别

    4 urllib和urllib2的区别 这个面试官确实问过,当时答的urllib2可以Post而urllib不可以. urllib提供urlencode方法用来GET查询字符串的产生,而urllib2 ...

  4. Java安全之JNDI注入

    Java安全之JNDI注入 文章首发:Java安全之JNDI注入 0x00 前言 续上篇文内容,接着来学习JNDI注入相关知识.JNDI注入是Fastjson反序列化漏洞中的攻击手法之一. 0x01 ...

  5. 凝思磐石安全系统V6.0.8版本(debian)增加多于4个串口方法

    在网上找了好多方法,大家基本上都用ubuntu系统做实现演示,里面的有些文件我在凝思系统上根本找不到,最终通过摸索已解决,记录下操作过程(整个过程都需要在root用户下进行): 判断系统目前能识别的串 ...

  6. 【故障公告】博客站点再次出现故障,最终回退 .NET 5.0 恢复正常

    自从博客系统升级 .NET 5.0 之后遇到的诡异故障(一.二.三.四),今天它又出现了,就在前天刚刚故障之后, 就在昨天 .NET 5.0 正式版刚刚发布之后,出现了. 今天晚上我们在 19:30 ...

  7. String字符串加号的作用与基本数据类型加号的作用的区别

    1 public static void main(String args[] ){ 2 String Str="hellow"; 3 int num=110; 4 char c= ...

  8. git clone克隆github仓库慢,问题解决

    导读 转载自:https://www.hangge.com/blog/cache/detail_2670.html 原因     由于国内网络问题,当我们使用 git clone 命令从 github ...

  9. 使用Selenium爬取京东电商数据(以手机商品为例)

    进入京东(https://www.jd.com)后,我如果搜索特定的手机产品,如oppo find x2,会先出现如下的商品列表页: 如果点击进入其中一个商品会进入到如下图所示的商品详情页,可以看到用 ...

  10. day90:luffy:路飞项目前端部署

    目录 1.域名备案 2.域名解析 3.设置安全组 4.部署架构图 5.一些准备工作 6.docker 7.把前端项目通过nginx容器来运行 1.域名备案 腾讯云先要进行域名实名认证,实名认证三天后才 ...