如何使用 casperjs 下载与我在浏览器中看到的页面相同的页面
How to use casperjs to download a page same as the one I see in the broswer
由于没有js或coffeescript,我打算使用casperjs下载页面并使用python来解析它。但是我发现我下载的页面不喜欢我在浏览器中看到的页面 - 实际上它们的某些部分在保存页面之前没有加载。我想原因可能是加载回调尚未执行。如果我想下载与我在浏览器中看到的页面相同的页面,我该怎么办?非常感谢!
我的代码(咖啡脚本):
urls =
'jd' : 'http://list.jd.com/652-654-831-0-0-0-0-0-0-0-1-1-1-1-1-72-4137-33.html'
casper = require("casper").create()
process = (urls) ->
casper.start "", ->
@echo "begin to work"
for name, url of urls
casper.thenOpen url, ->
@echo @download url, "#{name}.html"
process(urls)
casper.run()
如
您所见casper.download()
实际下载文件。 由于您想要当前页面源,因此可以使用casper.getHTML()
。要将页面内容字符串实际写入文件,您可以使用 PhantomJS 提供的文件系统模块。它具有fs.write()
功能。
把它们放在一起,它在 JavaScript 中看起来像这样:
var fs = require("fs");
casper.start();
for(name in urls){
casper.thenOpen(name, function(){
this.echo("download " + name);
fs.write(name+".html", this.getHTML(), "w");
});
}
casper.run();
或者在 CoffeeScript 中像这样:
casper = require("casper").create()
fs = require("fs")
casper.start "", ->
@echo "begin to work"
for name, url of urls
casper.thenOpen url, ->
@echo "download " + name
fs.write "#{name}.html", @getHTML(), "w"
casper.run()
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 有时数据是't显示在浏览器中
- 使图像在单击时展开到不大于浏览器
- fetch() 函数未在 Ubuntu Chromium 浏览器上定义
- 不同浏览器中的空白字符正则表达式行为
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- Windows形成web浏览器控件和Javascript更改的DOM
- 如何临时暂停浏览器渲染,然后恢复整个页面
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 谷歌地图API v3不适用于移动浏览器或PhoneGap
- 禁用(而不是隐藏)浏览器滚动条
- jquery代码在Mozilla中有效,但在其他浏览器上无效
- 如何使用modalDialog来显示可以在所有浏览器中工作的弹出窗口
- 当浏览器上的后退按钮到达主页时,我需要删除Class
- 是否可以在浏览器中使用纯JavaScript保存音频流
- jQuery检测浏览器是否支持Zoom
- 重定向时角度刷新浏览器