使用PhantomJS将jQuery包含到打开的页面时,'null'不是对象错误

时间:2014-04-06 20:21:48

标签: jquery phantomjs

我正在尝试PhantomJS并希望用它来从网页中提取内容。但是,我不能使用以下代码注入jQuery。

console.log('SSL support = ', require('system').isSSLSupported);

var page = require('webpage').create();
console.log('page created');
page.open('https://www.google.com/#q=my+test+query', function() {
  console.log('page opened');
  page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js", function() {
    console.log('jQuery injected');
    phantom.exit();
  });
});

当我运行代码时,我看到一个错误

C:\Users\royshi\SkyDrive\Developer\Crawler>phantomjs test.txt
SSL support =  true
page created
page opened
TypeError: 'null' is not an object (evaluating 'document.body.appendChild')

  http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js:1
^C
C:\Users\royshi\SkyDrive\Developer\Crawler>

我的代码与the example provided by PhantomJS没有什么不同。想知道这里可能出现什么问题。

编辑:

我在上面的示例中使用的URL似乎有问题(即“https://www.google.com/#q=my+test+query”)。该代码适用于其他网址:https://www.google.com/

C:\Users\royshi\SkyDrive\Developer\Crawler>phantomjs test.txt
SSL support =  true
page created
page opened
jQuery injected

C:\Users\royshi\SkyDrive\Developer\Crawler>

想知道网址“https://www.google.com/#q=my+test+query”有什么问题。

1 个答案:

答案 0 :(得分:2)

在获得解决方案时回答编辑:#标签触发重定向。由于我不知道PhantomJS,我怀疑你需要像this gist建议的那样手动操作。