Curl 加载或准备就绪后使用wget获取页面

Curl 加载或准备就绪后使用wget获取页面,curl,wget,Curl,Wget,我不太清楚如何恰当地提出这个问题。 我正在尝试获取表单页面的HTML内容。 如果我在浏览器中打开它,我必须等待对应于youtube id[->这里是v=9MzikThwfPE]的youtube视频转换为mp3,然后出现下载链接。 我试图做的是在该下载链接存在或可见时获取网页的HTML内容。 如果我只是尝试用wget获取页面,我不会获取内容,一旦视频被处理,我就会获取内容。 如何使用wget或curl进行此操作? 多谢各位 我设法做到了这一点。 正如@Barmar所提到的,由于wget或curl不


我不太清楚如何恰当地提出这个问题。

我正在尝试获取表单页面的HTML内容。
如果我在浏览器中打开它,我必须等待对应于youtube id[->这里是v=9MzikThwfPE]的youtube视频转换为mp3,然后出现下载链接。
我试图做的是在该下载链接存在或可见时获取网页的HTML内容。
如果我只是尝试用wget获取页面,我不会获取内容,一旦视频被处理,我就会获取内容。
如何使用wget或curl进行此操作?
多谢各位

我设法做到了这一点。

正如@Barmar所提到的,由于wget或curl不支持js或不支持js引擎,因此不可能获得动态生成的HTML内容。

另一方面,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);
      }
      }); 
}
var page=require('webpage')。create(),
系统=要求(“系统”);
if(system.args.length<2 | | system.args.length>2){
log('Usage:dl.jsurl');
幻影。出口(1);
}
否则{
var url=system.args[1];
页面打开(url,
功能(状态){
如果(状态!=“成功”){
console.log('无法访问网络');
}否则{
setTimeout(函数(){
步骤=页面内容;
控制台日志(步骤);
phantom.exit();
},10000);
}
}); 
}

谢谢。

页面使用JavaScript动态构建页面,curl和wget不处理JS。检查网站是否提供了你想要的API。好吧!该页面不提供任何API。哦好的,那么你的意思是说没有办法用wget做到这一点?因为下载链接不在HTML中。它是使用Javascript添加到DOM中的。也许他们这样做是为了阻止人们做你想做的事情。