大家好我想知道是否有任何方法可以找到 在webview中加载的页面中的url 例如
webview.loadurl("stackoverflow.com") // this is url
string aa = -webivew.geturl() //in this way in kno url in adress bar
但我想知道“帮助”的网址>> https://stackoverflow.com/questions/ask?title=android%20how%20get%20url%20in%20page%20loaded-%20loading#
或其他没有clik的东西可能吗?
我认为jsoup有办法吗? 我很困惑。
答案 0 :(得分:1)
要从您的webView获取所有链接/ URL,您需要一个html解析器来迭代页面内容。 然后,您可以循环结果列表并检查它是否包含您的 Youtube频道网址或您要查找的网址。
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
Elements links = doc.select("a[href]"); // get all "a" elements with "href"
Elements pngs = doc.select("img[src$=.png]");// get all "img" with src ending .png
Element masthead = doc.select("div.masthead").first();
2)或使用HTML Parser库。
public static List<String> getLinksOnPage(final String url) {
final Parser htmlParser = new Parser(url);
final List<String> result = new LinkedList<String>();
try {
final NodeList tagNodeList = htmlParser.extractAllNodesThatMatch(new NodeClassFilter(LinkTag.class));
for (int j = 0; j < tagNodeList.size(); j++) {
final LinkTag loopLink = (LinkTag) tagNodeList.elementAt(j);
final String loopLinkStr = loopLink.getLink();
result.add(loopLinkStr);
}
} catch (ParserException e) {
e.printStackTrace(); // TODO handle error
}
return result;
}
3)或者创建自己的解析器,例如:
String HTMLPage; // get the HTML page as a String
Pattern linkPattern = Pattern.compile("(<a[^>]+>.+?</a>)", Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
Matcher pageMatcher = linkPattern.matcher(HTMLPage);
ArrayList<String> links = new ArrayList<String>();
while(pageMatcher.find()){
links.add(pageMatcher.group());
}
links
ArrayList将包含页面中的所有链接。
PS:您可以修改linkPattern
来过滤某些链接。
答案 1 :(得分:0)
在WebView中放置第一个客户端:WebViewClient,您将在其中调用html:
@Override
public void onPageFinished(WebView view, String url) {
webview1.loadUrl("javascript:alert(document.getElementsByTagName('body')[0].innerHTML);");
}
然后,再安排第二个客户:
webview1.setWebChromeClient(new MyWebChromeClient());
在WebChromeClient中,在将boolean navigationTolink声明为false后将其放入:
@Override
public boolean onJsAlert(final WebView view, String url, final String transfert, JsResult result) {
if (!navigationtoLink) {
Document html = Jsoup.parse(transfert);
Elements links = html.select("a[href]");
for (Element link : links) {
if (link.attr("href").contains("youtube.com")) {
view.loadUrl(link.attr("href"));
navigationtoLink=true;
}
}
}
This可以帮助抓取