Android利用Jsoup爬虫框架解析网页html

tengxunyun cera

Jsoup是不是叫爬虫框架我不清楚,只是比较应景,别深究。Jsoup功能非常强大,它可以使用 DOM 或 CSS 选择器来查找、取出数据。有人会说,我使用字符串操作函数构造取文本中间函数也是可以从网页HTML中取得需要的内容,那是你没遇到经常改版的网页,并且使用字符串操作来解析网页是非常麻烦的,因为不同的网页字符串标识不一样,而Jsoup不仅使用方便,而且可以像jQuery的选择器那样取数据,非常好用,不吹了,看下面介绍。

Jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

Jsoup的主要功能:
1. 从一个 URL,文件或字符串中解析 HTML;
2. 使用 DOM 或 CSS 选择器来查找、取出数据;
3. 可操作 HTML 元素、属性、文本;

Jsoup官方地址:https://jsoup.org/download

使用案例

private void getDataByJsoup(){

final NewsInfo newsInfo = new NewsInfo();
final Message message = new Message();
newsList.add(newsInfo);

// 开启一个新线程
new Thread(new Runnable() {
@Override
public void run() {
try {
// 网络加载HTML文档
Document doc = Jsoup.connect("https://voice.hupu.com/nba")
.timeout(5000) // 设置超时时间
.get(); // 使用GET方法访问URL
Elements elements = doc.select("div.list-hd");
for (Element element:elements){

String title = element.select("a").text(); // 新闻标题
String url = element.select("a").attr("href"); // 新闻内容链接
newsInfo.setTitle(title);
newsInfo.setNewsUrl(url);
Log.e("TAG","Jsoup ======>>" + title + url);
}
Elements elements1 = doc.select("div.otherInfo");
for (Element element: elements1){

String time = element.select("a").text(); // 时间
newsInfo.setNewsTime(time);
Log.e("TAG","Jsoup ======>>" + time );

}

message.what = 1;

} catch (IOException e) {
message.what = 2;
e.printStackTrace();
}
handler.sendMessage(message);
}
}).start();
}

结果如下图所示:

cera aliyun tengxunyun cloudiplc

相关推荐

利用 PHP 修复 HTML 标签闭合问题|检查并补全|

这两天在研究 Typecho 文章内容部分展示问题(后续可能会运用到 ArmxMod for Typecho 主题),由于在进行根据字数裁切时,PHP 并不会去判断到底裁的位置有没有问题,很有可能就把 HTML 标签裁了,还裁的不完全,就造成页面在展示的时候,布局混乱(目前这个问题在大家开发主题时做文章摘要比较容易出现),故在完成裁切后,应当对输出进行修复,补齐标签缺失的部分。 问题 比如正常的 HTML 代码如下: <p>这两天在研究 Typecho 文章内容部分展示问题(后续可能会运用到<a href=”https://vircloud.net/default/change-theme.html”>ArmxMod for Typecho</a> 主题</p> 经过裁切后,输出的 HTML 如下: <p>这两天在研究 Typecho 文章内容部分展示问题(后续可能会运用到<a href=”https://vircloud.net/default/change-theme.html”> 显然裁切后的 HTML 是不完整的,浏览器在显示时输出的页面完全变样了。 修复 function fixPost($post){ $post = preg_replace(‘/<[^>]*$/’,”,$post); preg_match_all(‘#<([a-z]+)(?: .*)?(?<![/|/ ])>#iU’, $post, $result); if($result){ $opentags = $result[1]; preg_match_all(‘#</([a-z]+)>#iU’, $post, $result); if($result){ $closetags = $result[1]; $len_opened = …

国内利用Gitee|加速访问GitHub仓库|完全免费

我们在开发和#部署#项目的时候,经常需要从GitHub上Pull一些开源的项目啥的!国外的#服务器#还好,但是国内的服务器就比较苦恼了!要不就是#无法访问#,要不就是速度超级慢! 比如昨天我想给#vim#工具安装一下#golang#的插件!看看这clone的速度!     于是乎我就想起来了Gitee!利用它为GitHub仓库加速一下!加速后的效果~ 还是非常不错啦! PS:由于是新建的仓库第一次访问,后来再访问速度更快了!     关于Gitee OSCHINA 推出的#代码#托管·协作开发平台,开发者超过 500 万,托管项目超过 1000 万,汇聚几乎所有本土原创开源项目,并于 2016 年推出企业版,提供企业级代码托管服务,成为开发领域领先的 SaaS 服务提供商。 支持 #Git# / SVN,个人版免费#5G#仓库容量。 操作流程 1)登陆#Gitee#账号,然后新建仓库 – 【 从 GitHub / GitLab 导入仓库】或者【点击这里】 2)填写要导入的项目即可(如果之前有人导入过该仓库,可以直接复用他的仓库即可)。   3)然后就可以使用Gitee仓库了!   其他说明 Gitee支持WebIDE。 可手动从GitHub更新仓库内容。 同步的仓库不仅仅是#代码#,还有提交记录,分支,#标签#等,全部复制过来。 本文借鉴:如有

GoIndex|利用Google Drive不限容量|创建自己的国内可访问不限容量网盘;并在线看视频;获取文件直链

一、GoIndex功能 部署在 CloudFlare Workers的小程序。 可以将 Google Drive 文件以目录形式列出,并直连下载。 流量走 CloudFlare ,网速由 CloudFlare 决定。 限制: wokers一天10万请求限制 google drive 下载10T/24h(大佬说的) google api 调用限制 二、搭建GoIndex (一)安装部署方案1 1、在本地安装 rclone 2、按照 https://rclone.org/drive/ 流程进行授权。 a、安装依赖 yum -y install unzip fuse fuse-devel b、安装rclone curl https://rclone.org/install.sh | sudo bash c、 Google Drive授权 ./rclone config 输入 n ,新建挂载,选择Google Drive,按要求填写 d、复制上面的链接,到浏览器打开,获取Google Drive授权码 3、执行 rclone config file 查看 …

支持分线路|电信|联通|移动|国外等|解析的免费|收费DNS服务

1、京东云解析DNS 稳定性有保障,免费版支持电信、联通、移动、教育网、铁通等。 地址:https://dns-console.jdcloud.com/ 2、DNSPod 现在为腾讯旗下,有保障。 地址:https://www.dnspod.cn 3、阿里云云解析DNS 没有免费版,只有收费版,每个域名年付40元。 支持联通、电信、移动、教育网、鹏博士、广电网、境外地区 地址:https://wanwang.aliyun.com/domain/dns 4、DNS.LA 免费版支持电信、联通、移动、教育网、铁通、搜索蜘蛛等。 地址:https://www.dns.la/dnsla/pricepersonal.aspx 5、百度云HTTPDNS 每月300万次免费解析服务。好像不能分线路解析。 地址:https://cloud.baidu.com/product/httpdns.html

微信扫一扫,分享到朋友圈

Android利用Jsoup爬虫框架解析网页html