爬虫伪造浏览器环境之jsdom(一)
摘要:python爬虫伪造浏览器环境
nodejs环境中没有window等对象,有时候网站采用前端加密,必须从网站前端抠出前端加密过的代码,在nodejs中模拟浏览器运行时往往会出现缺少对象问题,采用jsdom可以很方便模拟浏览器中js的各种对象。
代码如下:
const jsdom = require("jsdom");
const {JSDOM } = jsdom; //在jsdom中导出JSDOM对象
const { window } = new JSDOM('<!doctype html><html><body></body></html>'); //导出JSDOM中的window对象
global.window = window; //将window对象设置为nodejs中全局对象;
或者
const jsdom = require("jsdom");
const {JSDOM } = jsdom; //在jsdom中导出JSDOM对象
const {document} = (new JSDOM('<!doctype html><html><body></body></html>')).window; //导出JSDOM中window对象的doucument对象
global.document = document; //将doucument对象设置为nodejs中全局对象
const window = document.defaultView; //将document对象中的的defaultView属性(doucument.defaultView也就是浏览器中的window对象)
tips:
//nodejs中允许下面这种写法,const a为块级作用域,global.a为全局作用域,javascript先寻找块级作用域,在寻找全局作用域。
function aa()
{
const a = 1;
global.a = 2;
console.log(a);
}
aa()
console.log(a);
运行结果:
1
2
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。