【问题标题】:HTMLUNIT java javascript ajaxHTMLUNIT java javascript ajax
【发布时间】:2013-02-23 14:56:54
【问题描述】:

我正在尝试解析一个视频资源cinemaonline.kg 以获取视频文件的链接。起初我试图将打开的页面保存在记事本中。我看了看,发现:

[a id="onlineplayer" onmouseover="jQuery('a#onlineplayer').fancybox({'width' :'8', 'height' : 430, 'autoScale' : true, 'transitionIn' :'none', 'transitionOut' : 'none', 'type' : 'iframe' ,'closeClick' : 'false' , 'hideOnOverlayClick':false,'hideOnContentClick':false});" onclick="window.ui.hitMovie(74);window.ui.setFileDownloaded(74);" class="minibutton" href="http://cinemaonline.kg/pl.php?player=ftp&uid=1953&movieid=74&fileid=74&v=6b576ed87c32f85f9252e80591ca1228">[span]Смотреть[/span][/a]

- 这个字符被这个字符 - [] 改变了,因为它们没有显示出来。

所以我尝试用 jsoup 来抓取它。但它返回了我的空指针异常。我查看了页面的返回字符串,没有标签 [a id = "onlineplayer" ...]。我想,也许页面总是由一个脚本生成的:

[a id=\"onlineplayer\" onmouseover=\"jQuery(\'a#onlineplayer\').fancybox({\'width\' : \'8\',\'height\' : 430, \'autoScale\' : true, \'transitionIn\' : \'none\', \'transitionOut\' : \'none\',\'type\' : \'iframe\' , \'closeClick\' : \'false\' , \'hideOnOverlayClick\':false,\'hideOnContentClick\':false});\" onclick=\"window.ui.hitMovie(${movie.movie_id});window.ui.setFileDownloaded(${file.file_id});\" class=\"minibutton\" href=\"${file.links.license|escape}\"][span]Смотреть[/span][/a]

比我尝试用 HtmlUnit 解析它:

String url = "http://cinemaonline.kg/#/movie/id/74";
WebClient webClient = new WebClient();
webClient.setJavaScriptEnabled(true);
HtmlPage page = null;
webClient.setThrowExceptionOnFailingStatusCode(false);
webClient.setThrowExceptionOnScriptError(false);
try {
    page = webClient.getPage(url);
} catch (FailingHttpStatusCodeException e1) {
    e1.printStackTrace();
} catch (MalformedURLException e1) {
    e1.printStackTrace();
} catch (IOException e1) {
    e1.printStackTrace();
}
webClient.waitForBackgroundJavaScript(10000);
webClient.closeAllWindows();
System.out.println(page.asXml());

但它返回的文本与 jsoup 返回的文本相同。 我知道该页面使用 javascript 和 ajax(?),但我真的不知道它是如何工作的。 如何返回生成的文本?请帮忙

【问题讨论】:

    标签: javascript android html htmlunit


    【解决方案1】:

    检查此问题以获取图片链接Jsoup: how to get an image's absolute url?

    同样,您可以获取视频元素并在其上使用 yourvideoelement.attr("href") 来获取返回的链接

    【讨论】:

    • 不,问题是我在没有使用浏览器(googlechrome)的情况下无法从页面中找到视频元素。当我尝试抓取一个 html 时,它不包含 videoelement。这就是为什么我建议总是生成视频元素,但只有当我用浏览器打开页面时
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多