JavaScript / Jsoup - 从" i class"获取背景图像网址

时间:2017-01-26 20:24:57

标签: javascript android jsoup

所以我在我的应用的网页浏览中加载了一个网页,然后是一个HTML i class="img profimage",它有一个背景图片网址,这是我的目标。 ..

我希望使用JavaScript或使用Jsoup来获取目标...

到目前为止我用Jsoup尝试的是:

public class GetImage extends AsyncTask<String, String, String> {

protected String doInBackground(String... strings) {

Document document = null;

try {

document = Jsoup.connect(url).get();

} catch (IOException e) {

e.printStackTrace();

}

String temp = document.select("i.img.profpic").first().getElementsByAttribute("style").toString();

return temp.substring(temp.indexOf("(") + 1, temp.indexOf(")"));

}

 

protected void onPostExecute(String result) {

Log.d("ChatScreen", result);

Toast.makeText(ChatScreen.this, result, LENGTH_SHORT).show();

}

}

但是我得到了NPE ...... 我不知道如何使用JavaScript获取 i class 的背景图片网址...我可以在网上找到大量关于如何使用div使用它的示例ids

页面的HTML结构与此类似:

<div ....>
<div ....>
<i class="img profimage" style="background-image: url("url here");"/>
</div>
</div>

2 个答案:

答案 0 :(得分:0)

检查this Answer可能会有效,但我没有尝试过。 JS函数在 evaluateJavascript()中编写,它将读取样式属性,然后您可以使用substring方法来获取URL。

webview.evaluateJavascript(
        "(function() { return (document.getElementsByTagName('i')[index].getAttribute('style')); })();",
         new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String html) {
                Log.d("HTML", html); 
                // now use substring to get url.....
            }
    });

希望这对你有所帮助。

答案 1 :(得分:0)

引用this回答,您可以尝试下面的内容(假设它是类profimage的唯一/第一个元素,否则更改索引​​,即[n],其中n是索引)。或者,只需为元素添加唯一id并使用document.getElementById('imgid')并删除[0]。将它包装在一个函数中,以防你想在特定事件上调用它。

function getUrl() {
    var img = document.getElementsByClass('profimage'),
    style = img[0].currentStyle || window.getComputedStyle(img[0], false),
    bi = style.backgroundImage.slice(5, -2);
    return bi;
 }

切片会删除url("之前和")之后的网址。请注意,这将返回完整的URL。

如果这不起作用,您可以尝试style = img.style,代替上面代码中的较长表达式,因为背景图片在元素本身中添加了内联css(<i ... style="background-image: url("url here");"/> )。这将返回内联样式的url,在本例中为url here