我需要抓取一个具有 AJAX 和 SESSIONS 的网站表单(即时)。我做了很多研究,发现了几种可能的解决方案,其中之一是 Python::Mechanize。我不知道单独用于 PHP
的 python 和 cURL(根据我的理解)无法处理 AJAX 或提交表单。
我发现我认为可能的堆栈可以引导我走向优雅 :)。问题是我根本不知道如何使用这些包。
我下载并安装了 NODEjs,我可以从 cmd 调用它。 (很棒)
我下载并安装了 PhantomJS(不确定如何设置
PATH
以便它是动态的,所以我必须在 CMD 中手动cd
到DIR
让它加载)我如何在 Windows 7 中设置它?不确定将路径指向何处。下载 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 后执行下一步:
- 在桌面上,右键单击“我的电脑”,然后单击“属性”。
- 点击左侧栏中的“高级系统设置”链接。
- 在“系统属性”窗口中单击“环境变量”按钮。
- 找到 PATH 变量并点击编辑
- 在变量值末尾添加 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/