我需要从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("-------------------");
}
我在屏幕上标记了我想要的网址。
答案 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
搜索。
我希望它会有所帮助,请原谅我的冗长。