Android利用Jsoup解析html 开发网站客户端小记

news/2024/5/20 11:09:32/文章来源:https://blog.csdn.net/mypanlong/article/details/42966631

这些天业余时间比较多,闲来无事,想起了以前看过开发任意网站客户端的一篇文章,就是利用jsoup解析网站网页,通过标签获取想要的内容。好了废话不多说,用到的工具为 jsoup-1.7.2.jar包,具体jsoup的相关文档,请去这边看http://jsoup.org/,这里有全部Api可以查询。

这里解析的网站是一个食谱网站,首先解析的是大类栏目标签。

如果你使用过jquery那么 ,接下来的事情就小菜一碟了,我们按F12进入浏览器的开发者模式,去分析当前html页面的结构,如下图:

每个<li></li>标签里面的值就是我们需要的,接下来我们需要异步去获取网页信息,首先创建一个连接,生成一个Document对象,取得标题所在<ul>的id值,通过select过滤。

Elements divs = content.select("#siteNav");

然后通过Jsoup去解析上图的标签,通过循环取出标题栏还有子目录的超链接,插入数据库,超链接用作展开子目录的网页地址,像这种网站大的标题结构一般是不会改变的,可以留作缓存,而不用每次进入总要加载解析。

复制代码
//异步获取信息
class Loadhtml extends AsyncTask<String, String, String>
{
ProgressDialog bar;
Document doc;
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
try {
doc = Jsoup.connect(Constans.NetAddress).timeout(5000).post();
Document content = Jsoup.parse(doc.toString());
Elements divs = content.select("#siteNav");
Document divcontions = Jsoup.parse(divs.toString());
Elements element = divcontions.getElementsByTag("li");
Log.d("element", element.toString());
for(Element links : element)
{
String title = links.getElementsByTag("a").text();
String link   = links.select("a").attr("href").replace("/", "").trim();
String url  = Constans.NetAddress+link;
ContentValues values = new ContentValues();
values.put("Title", title);
values.put("Url", url);
usedatabase.insert("Cach", values);
}
} catch (IOException e) {
// TODO Auto-generated catch block
                e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
//            Log.d("doc", doc.toString().trim());
            bar.dismiss();
ListItemAdapter adapter = new ListItemAdapter(context, usedatabase.getlist());
listmenu.setAdapter(adapter);
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
bar = new ProgressDialog(context);
bar.setMessage("正在加载数据····");
bar.setIndeterminate(false);
bar.setCancelable(false);
bar.show();
}
}
复制代码

最终手机断显示

今天就总结到这里,下次具体讲解析完数据后,通过SQLITE存储,还有每个标题的子目录展开等。

转自:http://www.cnblogs.com/LIANQQ/p/3460275.html

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

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

相关文章

Jsoup开发网站客户端第二篇,图片轮播,ScrollView兼容ListView

最近一段日子忙的焦头烂额&#xff0c;代码重构&#xff0c;新项目编码&#xff0c;导致jsoup开发网站客户端也没时间继续下去&#xff0c;只能利用晚上时间去研究了。今天实现美食网首页图片轮播效果&#xff0c;网站效果图跟Android客户端实现如图&#xff1a; 从浏览器开发者…

开发任意网站Android客户端教程

程序已经完成,源码下载: Yangtze.zip (2 MB, 下载次数: 5337) 2012-12-19 09:05 上传点击文件名下载附件 下载积分: 下载豆 -2 登陆是需要账号的,账号可能还要留着后续开发.而 我已经毕业了, 要是被改了我还真没法改回来了...所以就不提供了.如果有人特别想要登陆看看的,可以在…

一步步教你为网站开发Android客户端

本文面向Android初级开发者&#xff0c;有一定的Java和Android知识即可。文章覆盖知识点&#xff1a;HttpWatch抓包&#xff0c;HttpClient模拟POST请求&#xff0c;Jsoup解析HTML代码&#xff0c;动态更新ListView背景介绍&#xff1a;客户端&#xff08;Client&#xff09;或…

Android模拟登陆带验证码的网站客户端

首先获取验证码并保存Cookie&#xff0c;登陆时将Cookie和账号密码一同发送出去&#xff0c;返回状态码200&#xff0c;登陆成功&#xff0c;接下来再去访问其他需要登录权限的页面时附上Cookie发送出去即可。 要实现模拟登陆&#xff0c;首先需要了解登陆网站时请求中都包含什…

使用jsoup做任意网站的客户端

jsoup是一个解析网页源码的开源库&#xff0c;他能按照给定的规则提取出一个网页中的任意元素&#xff0c;和其他网页解析库不同的是&#xff0c;他提取网页内容的方式和css、jquery的选择器非常相似。因此如果你懂得前端的知识&#xff0c;只需根据以下的代码样例就可以在3分钟…

原来我们不懂百度seo排名和百度竞价

2013年即将结束&#xff0c;高富白美在欢乐着自己的年假和年终奖&#xff0c;而我等只能继续苦逼的为梦想坚持到除夕放假&#xff0c;或许这是假日组在淬炼我们的精神吧&#xff0c;笑一笑有啥&#xff0c;切入主题。网络营销千千万&#xff0c;我们今天只看百度系&#xff0c;…

免费主机备案带宽_怎样自己建立一个网站,免费建站靠不靠谱

一、网站的组成网站主要由域名、服务器、网页三个部分组成。如果把网站比作一个房子的话&#xff0c;那么域名&#xff1a;相当于网站的地址&#xff0c;或者说是门牌号&#xff0c;用来找到网站&#xff0c;网站上的网页都是以网站的域名开头的&#xff0c;例如网站域名是www.…

Flink 指定时间范围内网站总浏览量(PV)的统计

基于Flink 统计每小时内的网站PV。 public class Flink03_Practice_PageView_Window2 {public static void main(String[] args) throws Exception {//1.获取执行环境StreamExecutionEnvironment env StreamExecutionEnvironment.getExecutionEnvironment();//2.读取文本数据…

JavaScript网站设计实践(六)编写live.html页面 改进表格显示

一、编写live.html页面&#xff0c;1、JavaScript实现表格的隔行换色&#xff0c;并且当鼠标移过时当前行高亮显示&#xff1b;2、是输出表格中的abbr标签的内容 实现后的效果图是这样的&#xff1a; 1、实现思路 在输出表格的时候&#xff0c;给出一个判断&#xff0c;如果偶数…

分享10个最佳的WordPress教程免费学习网站

WordPress是用于发布信息的最热门平台之一。 WordPress可用于个人或商业博客&#xff0c;也可以为你用于你的在线业务。WordPress最大的优点是&#xff0c;你可以轻松地去进行自定义设置&#xff0c;而且不必懂太多编程方面的知识。你对WordPress的一些知识懂的越多&#xff0c…

Python爬虫:使用正则表达式爬取网站电影信息

以爬取电影天堂喜剧片前5页信息为例&#xff0c;代码如下&#xff1a; 1 # coding:UTF-82 3 import requests4 import re5 6 def mov():7 headers{User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/53…

流量排名前一千万网站,三分之一使用 WordPress

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; >>> WordPress 在官博发文&#xff0c;庆祝它在流量排名前一千万网站中的市场占有率达到了三分之一。据 W3Techs 的数据&#xff0c;WordPress 在前一千万网站的市场份额从一年前的 29…

node的系统核心模块实现服务器功能、用nodejs做动态网站(后端渲染)

1、初步实现服务器功能详解 a、静态服务器功能---提供静态网页&#xff08;不管什么路径访问的响应只有ok&#xff09; b、优化a做的功能 ---处理路径的分发&#xff08;我们期待结果是不同路径对应不同响应处理&#xff08;页面&#xff09;&#xff09; 通过postman工具可以…

网站速度测试

为什么80%的码农都做不了架构师&#xff1f;>>> |国内 卡卡网&#xff1a;http://www.webkaka.com/ &#xff08;可以设置国内测试点和全球测试点 奇云测速&#xff1a;http://ce.cloud.360.cn/ |国外 PINGDOM &#xff1a;http://tools.pingdom.com/fpt/ |导航…

大型网站技术架构(四)网站的高性能架构

2019独角兽企业重金招聘Python工程师标准>>> 网站性能是客观的指标&#xff0c;可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间&#xff0c;指从发出请求到最后收到响应数据所需要的时…

偷情网站被黑 无隐私的互联网下如何保护自己

用户隐私信息被盗&#xff0c;似乎是自互联网诞生以来&#xff0c;一直盘旋在头顶挥散不去的阴影——最为普及的Windows系统自身存在的各种问题&#xff0c;网站被黑、数据被窃事件层出不穷。即使目前是目前最为火爆的移动互联网&#xff0c;安卓系统的病毒应用及各种堵之不及的…

spark读取 kafka nginx网站日志消息 并写入HDFS中(转)

原文链接&#xff1a;spark读取 kafka nginx网站日志消息 并写入HDFS中 spark 版本为1.0 kafka 版本为0.8 首先来看看kafka的架构图 详细了解请参考官方 我这边有三台机器用于kafka 日志收集的 A 192.168.1.1 为server B 192.168.1.2 为producer C 192.168.1.3 为consumer 首先…

Linux环境下部署Jpress大型博客网站

Jpress简介 一个类似 WordPress 的产品&#xff0c;使用Java开发。 开始部署 1.环境准备 1.1.搭建tomcat jdk安装 #这里的eof使用单引号引起来是为了让特殊符号也写入文件 #PATH 存放命令的路径&#xff0c;如果不小心改错了/etc/profile文件那么命令就不能使用了&#xf…

使用 Asp(vbs) 来读取 XML 数据岛 来制作网站菜单

总的来说还得使用到Microsoft的ActiveX创建XML对象&#xff1a;createObject("Microsoft.XMLDOM")读取节点&#xff1a;selectSingleNode("nodename") //nodename为节点名。读取属性&#xff1a;attributes.getNamedItem("attribute") //attribu…

部署论坛项目并使用redis缓存加速网站访问流量

部署discuz并使用redis加速 1.部署LNMP环境 1.1.准备yum环境 [rootjiangxl ~]# rm -rf /etc/yum.repos.d/* [rootjiangxl ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo ;curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.…