首先介绍一下jsoup,他的中文文档:http://www.open-/jsoup/selector-syntax.htm
说明:jsoup是一个用于处理HTML工作的Java库。它提供了一个非常方便的API来提取和数据操作,使用了最好的DOM、CSS和类jquery方法。
具体详细文档可以去浏览jsoup官方文档:/
我呢今天就主要说一下我是如何使用jsoup实现对网页文档的修改和实现的。首先找一个简单的网页地址:/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中给出的各种方法比如选择器加正则表达式实现特殊筛选等功能。