Android Studio下的简单网页解析
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下的简单网页解析的更多相关文章
- Android Studio下导出jar包和aar包
Android Studio下导出jar包和aar包 jar包和aar包的区别 步骤 1. 创建Android工程 创建工程比较简单,不错复述 2. 创建一个Library(Module) 创建了一个 ...
- Android Studio下HierarchyViewer的使用
什么是HierarchyViewer Hierarchy Viewer是随AndroidSDK发布的工具,位置在tools文件夹下,名为hierarchyviewer.bat.它是Android自带的 ...
- Android studio 下 JNI 开发实例
在AS中进行 NDK 开发之前,我们先来简单的介绍几个大家都容易搞懵的概念: 到底什么是JNI,什么是NDK? 何为“交叉编译”? 先看什么是 JNI?JNI 的全称就是 Java Native In ...
- Android Studio下jni应用
最近在将一个小应用从eclipse开发迁移到android studio,程序中有native代码实现,在eclipse是靠Android.mk这么个mk文件来组织编译的,但到android stud ...
- 解决Android Studio下Element layer-list must be declared问题
近期将一个项目从Eclipse转到Android Studio. 项目中使用了环信demo中的一些xml资源,转换后发现color资源目录下诸如layer-list或者shape等标签报Element ...
- Android studio下gradle Robolectric单元测试配置
android studio下gradle Robolectric单元测试配置 1.Robolectric Robolectric是一个基于junit之上的单元测试框架.它并不依赖于Android提供 ...
- Android studio 下JNI编程实例并生成so库
Android studio 下JNI编程实例并生成so库 因为公司需要为Android相机做美颜等图像后期处理,需要使用JNI编程,最近学了下JNI,并且在Android Studio下实现了一个小 ...
- Android Studio下打jar包
在我们使用Eclipse时,我们常常使用的第三方类库文件大多都是jar包形式,用起来很方便.但是jar包只能打包class文件,对于Android UI类库而言,我们常常需要打包资源文件,对于界面不多 ...
- Android Studio下多渠道打包
Android Studio下实现多渠道打包 直接上步骤 步骤 1. 清单文件添加属性(以友盟统计为例) 在application标签下添加meta-data属性 <application -- ...
随机推荐
- linux用户及组相关文件介绍
用户和组文件介绍 1.用户账号文件:passwd passwd命令用于设置用户的认证信息,包括用户密码.密码过期时间等.系统管理者则能用它管理系统用户的密码.只有管理者可以指定用户名称,一般用户只能变 ...
- python机器学习实现K-近邻算法(KNN)
机器学习 K-近邻算法(KNN) 关注公众号"轻松学编程"了解更多. 以下命令都是在浏览器中输入. cmd命令窗口输入:jupyter notebook 后打开浏览器输入网址htt ...
- python数学math和random模块
math模块 关注公众号"轻松学编程"了解更多. 在使用math模块时要先导入 # 导入模块 import math 1.math.ceil(num) 对num进行向上取整 num ...
- python创建Django项目
创建Django项目 关注公众号"轻松学编程"了解更多. 创建一个HelloDjango项目 GitHub地址:https://github.com/liangdongchang/ ...
- [Luogu P1345] [USACO5.4]奶牛的电信Telecowmunication (最小割)
题面 传送门:https://www.luogu.org/problemnew/show/P1345 ] Solution 这道题,需要一个小技巧了解决. 我相信很多像我这样接蒟蒻,看到这道题,不禁兴 ...
- Java基础系列-单例的7种写法
原创文章,转载请标注出处:https://www.cnblogs.com/V1haoge/p/10755322.html 一.概述 Java中单例有7种写法,这个是在面试中经常被问到的内容,而且有时候 ...
- Fiddler的一系列学习瞎记2(没有章法的笔记)
前言 不适合小白,因为很多需要小白来掌握的东西我都没有写,就是补充自己还不会的东西,所以,有些同僚看起来可能感觉不是很清楚. 正文: 瞎记2-什么是代理服务器 1.web代理服务器,是在客户端和服务器 ...
- 科普干货|漫谈鸿蒙LiteOS-M与HUAWEI LiteOS内核的几大不同
摘要:鸿蒙和LiteOS的内核都是一样的名字,可它们究竟有什么不同呢?一起来对比一下文件吧! HarmonyOS系统 HarmonyOS是一款"面向未来".面向全场景(移动办公.运 ...
- Ceph根据Crush位置读取数据
前言 在ceph研发群里面看到一个cepher在问关于怎么读取ceph的副本的问题,这个功能应该在2012年的时候,我们公司的研发就修改了代码去实现这个功能,只是当时的硬件条件所限,以及本身的稳定性问 ...
- Python_爬虫_基础
1.urllib 和 Xpath的区别与联系 from urllib import request from lxml import etree from bs4 import BeautifulS ...