1


我不太确定,如何恰当地提出这个问题。

我正在尝试获取http://www.youtube-mp3.org/#v=9MzikThwfPE形式的页面的 HTML 内容。
如果我在浏览器中打开它,我必须等待对应于 youtube id [-> here is v=9MzikThwfPE] 的 youtube 视频转换为 mp3,然后出现下载链接。
我要做的是在此下载链接存在或可见时获取网页的 HTML 内容。
如果我只是尝试使用 wget 获取页面,我不会获取内容,一旦视频处理完毕,我将获取内容。
我怎样才能用 wget 或 curl 做到这一点?
谢谢你。

4

1 回答 1

0

我设法用phantomjs做到了这一点。

正如@Barmar 提到的,不可能使用 wget 或 curl 获取动态生成的 HTML 内容,因为它们不支持 js 或不支持 js 引擎。

另一方面,phantomjs 支持 js 并且可以像浏览器一样运行,我们可以发布请求、存储 cookie 以及您可以使用支持 java 的浏览器执行的许多其他操作。
这是完成这项工作的示例 js 脚本 [托管页面、获取动态 HTML 内容和存储 cookie]

var page = require('webpage').create(),
system = require('system');

if (system.args.length < 2 || system.args.length > 2) {
    console.log('Usage: dl.js URL');
    phantom.exit(1);
}
else{ 
    var url=system.args[1];
    page.open(url,
          function (status) {
      if (status !== 'success') {
          console.log('Unable to access network');
      } else {
          window.setTimeout(function(){
              steps = page.content;
              console.log(steps);
              phantom.exit();
          },10000);
      }
      }); 
}

谢谢你。

于 2013-03-27T16:23:20.887 回答