0

由于不熟悉js或coffeescript,我打算使用casperjs来下载页面并使用python来解析它。但是我发现我下载的页面与我在浏览器中看到的页面不一样——实际上其中的某些部分在页面保存之前还没有加载。我猜原因可能是没有执行 onload 回调。如果我想下载与我在浏览器中看到的页面相同的页面,我应该怎么做?非常感谢!

我的代码(咖啡脚本):

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()
4

1 回答 1

2

如您所见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()
于 2014-06-29T13:05:55.950 回答