gpt4 book ai didi

java - 如何在webview android上显示网页的一部分

转载 作者:搜寻专家 更新时间:2023-11-01 09:39:53 26 4
gpt4 key购买 nike

我正在尝试从网页中提取一小部分并加载到 webview 中 我已经尝试按照链接中给出的解决方案,但它没有用

Display a part of the webpage on the webview android

使用 getElementsByClass("darewod") 提取数据

htmlDocument = Jsoup.connect(htmlPageUrl).get();
element = htmlDocument.getElementsByClass("darewod");

String html = element.toString();
String mime = "text/html";
String encoding = "utf-8";

我尝试了以下两种方法来加载到 webview 但它似乎不起作用,它只是在 UI 上打印 HTML

  wv1.loadDataWithBaseURL(null, html, "text/html", "utf-8", null);

wv1.loadData(html, "text/html", null);

如果我遗漏了什么,你能告诉我吗?

最佳答案

您加载的 html 代码没有正确的 structure (所以 head 中的所有定义都丢失了,比如 CSS 引用)并且没有初始文档(或使用基本 url 加载)所有相对路径都被破坏了。

<div class="darewod"> <a title="Workout of the Day" href="/workouts/lower-abs-workout.html" rel="alternate"><img src="/images/grid/wod/2016/wod_nov8.jpg" alt="Workout of the Day"></a> </div>

您可以做什么:用您选择的元素替换文档的主体,从而保留有关基础的结构和信息:

示例代码

WebView wv;
Handler uiHandler = new Handler();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

wv = (WebView)findViewById(R.id.webView);
wv.setWebViewClient(new MyWebViewClient());

new BackgroundWorker().execute();

}

// load links in WebView instead of default browser
private class MyWebViewClient extends WebViewClient {

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}

@RequiresApi(21)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.getUrl().toString());
return false;
}
}

private class BackgroundWorker extends AsyncTask<Void, Void, Void> {

@Override
protected Void doInBackground(Void... arg0) {
getDarewod();
return null;
}

public void getDarewod(){

try {
Document htmlDocument = Jsoup.connect("http://darebee.com/").get();
Element element = htmlDocument.select("#gkHeaderMod > div.darewod").first();

// replace body with selected element
htmlDocument.body().empty().append(element.toString());
final String html = htmlDocument.toString();

uiHandler.post(new Runnable() {
@Override
public void run() {
wv.loadData(html, "text/html", "UTF-8");
}
});
} catch (IOException e) {
e.printStackTrace();
}
}

}

关于java - 如何在webview android上显示网页的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40477584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com