Android开发使用jsoup实现网页内容抓取和修改网页内容

首先介绍一下jsoup,他的中文文档:http://www.open-open.com/jsoup/selector-syntax.htm

说明:jsoup是一个用于处理HTML工作的Java库。它提供了一个非常方便的API来提取和数据操作,使用了最好的DOM、CSS和类jquery方法。

具体详细文档可以去浏览jsoup官方文档:https://jsoup.org/

我呢今天就主要说一下我是如何使用jsoup实现对网页文档的修改和实现的。首先找一个简单的网页地址:https://m.hupu.com/nba/news/2361753.html

我们可以使用浏览器打开这个地址(推荐谷歌浏览器),右键点击,选择检查,可以查看具体的网页布局HTML。下面就是使用jsoup来直接获取该网页的源码HTML。直接通过依赖导入依赖包:

implementation 'org.jsoup:jsoup:1.11.3'

然后使用方法:

Document document = Jsoup.connect(nowUri)
        .timeout(15000)
        .get();

可以获取到一个Doucument文档对象,这个就包含了网页的HTML内容,我们可以使用

document.title()

方法获取到网页的标题,也可以使用tostring或outerHtml获取到网页的源码。假如我们想改变网页文本的标题:

<h1 class="headline">沃顿:今晚我们赢得并不漂亮,但赢球终归是赢球</h1>

首先我们要获取到他,可以使用方法:

Element element = document.selectFirst("h1");

h1是元素标签,也就是筛选条件,element就是标签对象,可以使用toString()打印标签,可以使用text()方法获取到此标签包含的文本。接下来修改网页标题,使用方法:

element.text("这是我修改过的标题,哈哈哈……");

这样就能够实现了。我们可以通过webview加载我们修改过的HTML:

mWebView.loadDataWithBaseURL(URL_HTML, document.outerHtml(), "text/html", "utf-8", null);

URL_HTML为网页的原始地址,document.outerHtml()就是我们获取到的HTML。效果图:

接下来就是修改文章内容部分,同样先筛选出文章内容

Elements elements = document.select("p");
                for (int i = 0; i < 4; i++) {
                    //打印文章的内容
//                    elements.text();
                    elements.get(i).appendText("《这段内容结束》");
                    mWebView.loadDataWithBaseURL(URL_HTML, document.outerHtml(), "text/html", "utf-8", null);
                }

因为这里是有四段内容,所以先筛选出标签为“p”的集合,然后修改前四个就行了,这里使用到了appendText()方法作用就是在标签内容后面追加文本内容,效果图:

我们还可插入一个新的英文标题:

Element element2 = document.selectFirst("h1");
Element element1 = element2.clone();
element1.text("This is the title's translator");
element2.append(element1.outerHtml());
mWebView.loadDataWithBaseURL(URL_HTML, document.outerHtml(), "text/html", "utf-8", null);

OK,更多方法,更多实现可以参考jsoup中给出的各种方法比如选择器加正则表达式实现特殊筛选等功能。

源码下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值