javascript - 如何在 Windows 7 上使用 NodeJS/PhantomJS/CasperJS

标签 javascript jquery node.js phantomjs casperjs

我需要抓取一个具有 AJAX 和 SESSIONS 的网站表单(即时)。我做了很多研究,发现了几种可能的解决方案,其中之一是 Python::Mechanize。我不知道单独用于 PHP 的 python 和 cURL(根据我的理解)无法处理 AJAX 或提交表单。

我发现我认为可能的堆栈可以引导我走向优雅 :)。问题是我根本不知道如何使用这些包。

  1. 我下载并安装了 NODEjs,我可以从 cmd 调用它。 (很棒)

  2. 我下载并安装了 PhantomJS(不确定如何设置 PATH 以便它是动态的,所以我必须在 CMD 中手动 cdDIR 让它加载)我如何在 Windows 7 中设置它?不确定将路径指向何处。

  3. 下载 CasperJS - 放入 DIR

因此,在 phantomjs 上,我能够运行一个测试文件,该文件在 CMD 提示符下回显“hello world”。现在我不知道如何进行。 - 最终我需要它从我的网络服务器运行(即时) - 所以它需要在我的网页中实现。截至目前,我只想从 CMD 运行它并让它转到页面、提交表单、抓取结果并将其写入文件。

有人可以解释一下我如何完成这个的工作流程吗?

CasperJS -> 显示了这个表单示例。我想用我的变量来实现,运行脚本并保存结果。

casper.start('http://some.tld/contact.form', function() {
    this.fill('form#contact-form', {
        'subject':    'I am watching you',
        'content':    'So be careful.',
        'civility':   'Mr',
        'name':       'Chuck Norris',
        'email':      'chuck@norris.com',
        'cc':         true,
        'attachment': '/Users/chuck/roundhousekick.doc'
    }, true);
});

casper.then(function() {
    this.evaluateOrDie(function() {
        return /message sent/.test(document.body.innerText);
    }, 'sending message failed');
});

casper.run(function() {
    this.echo('message sent').exit();
});

最佳答案

安装 PhantomJS 后执行下一步:

  1. 在桌面上,右键单击“我的电脑”,然后单击“属性”。
  2. 点击左侧栏中的“高级系统设置”链接。
  3. 在“系统属性”窗口中单击“环境变量”按钮。
  4. 找到 PATH 变量并点击编辑
  5. 在变量值末尾添加 PhantomJS 路径(不要忘记在它之前加上 ;)

现在您可以从您的 CMD 使用 phantomjs。 例如:phantomjs c:\mywebsite\with\ajax\dopescript.js

完成这些步骤后,下载 CasperJS 并将其放入 PhantomJS 文件夹

例如:c:\phantomjs\casperjs

对 CasperJS 的 PATH 变量执行前面的步骤(在末尾加上\bin)

例如:c:\phantomjs\casperjs\bin

从 CMD 尝试 casperjs。

如果它不工作,请转到 casperjs 文件夹中的 batchbin 目录并午餐 casperjs.bat

现在尝试从此文件夹调用 CasperJs。 (为我工作)

所以现在您应该拥有 PhantomJS + CasperJS。

关于保存结果:

将此 var fs = require('fs'); 放在脚本的开头并调用

fs.write('result.html', myData); 其中 myData 是您需要保存的数据。

这里是关于 FS 的更多信息: PhantomJS File System

关于javascript - 如何在 Windows 7 上使用 NodeJS/PhantomJS/CasperJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12650274/

相关文章:

javascript - PHP::使用ajax上传

javascript - 从 div id 中删除字符

javascript - 5 秒后打开弹出窗口我做错了什么?

javascript - 通过 jQuery 仅传递选定的复选框和属性输入文本框?

javascript - 使用node.js存储图像出现错误

mongodb - geoNear 回调?

node.js - 从异步等待函数中获取 Bluebird Promise

javascript - 随机图像未显示

流体布局中的 JavaScript 数据网格?

javascript - 按属性 nodeValue 对 Nodelist 进行排序