如何从网页解析javascript

时间:2014-11-19 15:24:01

标签: javascript html parsing jsoup

我需要从javascript获取链接。我使用jsoup,但它没有用。

screen  我需要从页面源获取此链接。任何人都可以帮我怎么做?

    String url = "http://www.cda.pl/video/149016ec/Rybki-z-ferajny-2004-1080p-Dubbing-pl";
    Document doc = Jsoup.connect(url).get();


    Elements scriptElements = doc.getElementsByTag("script");

    for (Element element :scriptElements ){                
           for (DataNode node : element.dataNodes()) {
               System.out.println(node.getWholeData());
           }
           System.out.println("-------------------");            
     }

我在屏幕上标记了我想要的网址。

1 个答案:

答案 0 :(得分:0)

您可以使用此代码:

    String url = "http://www.cda.pl/video/149016ec/Rybki-z-ferajny-2004-1080p-Dubbing-pl";
    Document doc = Jsoup.connect(url).get();

    //we pick the script node 
    Element script = doc.select("#player > script").get(0);
    String text = script.html();

    //then we parse the script for the desired uri
    final String prefix = "l='";
    int p1 = text.indexOf(prefix) + prefix.length();
    int p2 = text.indexOf("'", p1);
    String uri = text.substring(p1,  p2);

    System.out.println(uri);

它将提供所需的输出:

http://vgra001.cda.pl/lqcc6f8b3c8f76d1b58c1234813fcf67c7.mp4?st=SjoQ8DDcnH7pW8_XNNkA3w&e=1416438406

请注意,这只是一个示例,您需要进行错误检查。

现在解释:

你几乎完成了它,你有了uri的代码位置,然后很容易找到重要的脚本节点:你可以在<div class="wrapqualitybtn">标签附近看到script,然后您可以找到包含div标记和script标记div,脚本标记父节点的<div id="player" ... >

拥有脚本节点后,您只需要进行字符串解析。解析javascript代码可能会有风险,因为代码中的一点变化可能会破坏您的解析器,但我认为在这种情况下寻找l='是一个可靠的赌注。

一些建议:

  • 当页面使用jQuery时,您也可以在浏览器控制台中使用jQuery!如果您将$('#player > script')[0]放入浏览器,您将看到脚本标记。

  • 您可以在浏览器的开发者工具中搜索某个页面的DOM(F12),然后右键单击一个节点并单击Copy CSS Path(在chrome中,类似于firefox中的内容)并且您将获取JSoup中可用的选择器。

  • 对于更具弹性的脚本解析,您可以使用正则表达式而不是普通的indexOf搜索。

我希望它会有所帮助,请原谅我的冗长。