2014-12-29 1 views
0

Привет всем я хочу знать, если есть способ найти URL в странице, загруженной в WebView , напримерандроид как получить URL в странице loaded- загрузки

webview.loadurl("stackoverflow.com") // this is url 
string aa = -webivew.geturl() //in this way in kno url in adress bar 

НО Я хочу знать о URL " помощь ">>https://stackoverflow.com/questions/ask?title=android%20how%20get%20url%20in%20page%20loaded-%20loading#

или что-то еще без клика на это возможно?

Я думаю, что с jsoup есть способ или нет? Я в замешательстве.

+2

Что вы подразумеваете под «* i want to know url of help *»? – Rami

+0

@Raid это был пример я просто хочу знать один конкретный URL с сайта без щелчка на нем для примера URL, моего канала со страницей Youtube.com – user3565993

ответ

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, поставить это, после того, как объявил булево navigationTolink ложь:

@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 ча n help for grabbing

+0

Гроссмана, спасибо за ответ я искал что-то хотело бы знать определенный URL-адрес в загруженном виде в webview (или с сайта) пример link = youtube.com Я хочу знать, Url моего канала, не нажимая на него это возможно? – user3565993

+0

Да, я отредактировал свой ответ. –

+0

спасибо grossmann, я пытаюсь проверить Я скажу вам, если он работает – user3565993

1

Чтобы получить все ссылки/URL-адреса из вашего веб-браузера, вам понадобится html-парсер для итерации содержимого страницы. Затем вы можете закодировать список результатов и проверить, содержит ли он ваш Youtube Channel url или URL-адрес, который вы ищете.

1) Вы можете использовать jsoup, это пример (взятый из here):

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, чтобы отфильтровать некоторые ссылки.

+0

спасибо, rami, все это расширенный учебник ,, im новичок: '( – user3565993

+0

Euuh! Не очень продвинутый. Что бы вы ни делали, никогда не узнаете;) – Rami

+0

да, вы правы, jsoup хорош но я dnt знаю, как начать его это дает мне ошибку не может решить метод java.lang.String Я пытался использовать метод grossmann с помощью JSOUPP – user3565993

Смежные вопросы