这个方法加载的是本地的js,如果要加载非本地js的话,应该要加上crossorigin头。
phantomjs 抓取js动态加载数据的方法:
phantomjs因为是无头浏览器可以跑js,用来进行网页抓取是再好不过了。
比如我们要批量抓取网页 “历史上的今天” 的内容。
第一行将会在终端打印出字符串,第二行 phantom.exit 将退出运行。
在该脚本中调用 phantom.exit 是非常重要的,否则 PhantomJS 将根本不会停 止。 pyspider 连上 PhantomJS 代理后,你就能通过在 self.crawl 添加 fetch_type='js' 的参数,开启使用 PhantomJS 抓取。
动态创建 script 标签,就可以加载了,简单写个 demo,未测试,仅提供思路:
var script = document.createElement( 'script' )script.type = 'text/javascript'
script.src = 'http://******************.js'
script.onload = function() {
console.log( ' Done' )
}
document.getElementsByTagName( 'head' )[ 0 ].appendChild( script )
上面代码需要注意几点:
一些旧版本IE可能不支持 script 的 onload,需要使用 onreadystatechange。
插入节点是,严谨的话,需要判断一下是否有<base>标签存在