cURL从bash中的网页中提取错误的超链接

时间:2016-06-29 02:23:48

标签: jquery json bash curl air

我正在尝试使用cURL从Adobe中提取超链接:

使用cURL命令行时,我得到的链接是默认链接" http://www.adobe.com"而不是上面的那个。 我怀疑cURL不是"呼叫"使用正确的超链接填充按钮的JavaScript或JQuery。

enter image description here

任何人都可以指出我正确的方向吗? 如何让cURL生成或提取此按钮的正确链接?

2 个答案:

答案 0 :(得分:1)

您可以使用phantomjs

创建一个这样的脚本

#! /usr/bin/phantomjs --ssl-protocol=any
var page = require('webpage').create(),
  system = require('system'),
  t, address;

if (system.args.length === 1) {
  console.log('Usage: load.js <some URL>');
  phantom.exit();
}

page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36';
address = system.args[1];
page.open(address, function(status) {
  if (status !== 'success') {
    console.log('FAIL to load the address: ' + status);
  } else {
    var btn = page.content.match(/<a id="buttonDownload" .*download-button">/)
    console.log(btn);
  }
  phantom.exit();
});

并调用它(如果你的操作系统支持shebang)

$ ./load.js https://get.adobe.com/air

获得

<a id="buttonDownload" href="/air/download/?installer=Adobe_AIR_22.0_for_Win32&amp;standalone=1" class="Button ButtonYellow download-button">

否则,请将其用作

phantomjs --ssl-protocol=any load.js https://get.adobe.com/air

答案 1 :(得分:0)

cURL只执行HTTP / S请求。 HTTP协议仅用于文本,当返回HTML时,该文本可以包含浏览器和其他工具可以解释的标记,尤其是<img><link><script>

所以你得到的文字就是这样;实际上以与浏览器相同的方式执行javascript涉及大量工作(低估)。

Selenium等工具提供编程机制来执行&#34;执行&#34;现代网页的HTML。可能想看那里。