nodejs抓取动态网页(基于PhantomJS的PhantomJSAPI的核心浏览器的功能,使用webkit来编译)

优采云 发布时间: 2021-11-07 10:10

  nodejs抓取动态网页(基于PhantomJS的PhantomJSAPI的核心浏览器的功能,使用webkit来编译)

  PhantomJS 是一个基于 webkit 的 JavaScript API。它使用 QtWebKit 作为其核心浏览器功能,并使用 webkit 来编译、解释和执行 JavaScript 代码。你可以在基于 webkit 的浏览器中做的任何事情,它都能做到。它不仅是一个隐形浏览器,还提供CSS选择器、Web标准支持、DOM操作、JSON、HTML5、Canvas、SVG等,还提供处理文件I/O的操作,让你可以对操作系统进行文件读写等。PhantomJS有广泛的用途,如网络监控、网页截图、无浏览器的网页测试、页面访问自动化等。

  PhantomJS 官方地址:.

  PhantomJS 安装:

  1.到PhantomJS下载对应版本

  2.设置环境变量PATH (sudo ln -s /Applications/phantomjs-2.1.1/bin/phantomjs /usr/local/bin/) windows通过自己的方法,2.1.1是你自己的版本

  PhantomJS验证成功:在终端数据phantomjs

  运行:phantomjs get_data.js

  根据页面结构在page.evaluate中找到对应的数据并扔掉

  //访问 phantomjs XXX.js 需要抓取的页面url

//创建一个webpage对象

var page = require('webpage').create();

//拿到页面url

var system = require('system');

//设置打开页面的大小 尽量大,有些图片都是懒加载

page.viewportSize = {

width: 2000,

height: 40000

};

//用phantomjs浏览器加载一个网页

page.open(system.args[1], function (status) {

// 输出状态

if (status !== 'success') {

console.log("加载失败")

//页面加载成功

} else {

//给一定的异步时间防止那些后加载的东西

setTimeout(function () {

//加载jquery

page.includeJs("https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js", function () {

//page.evaluate 方法内也可以执行页面js 在里面组装数据

var data = page.evaluate(function (s) {

var arr = [];

for (var i = 0; i < $(".J_MouserOnverReq").length; i++) {

var obj = {};

obj.href = $(".J_MouserOnverReq:eq(" + i + ")").find(".pic-link").attr("data-href");

obj.price = $.trim($(".J_MouserOnverReq:eq(" + i + ")").find(".g_price").text());

obj.title = $.trim($(".J_MouserOnverReq:eq(" + i + ")").find(".J_ClickStat").text());

obj.image = $(".J_MouserOnverReq:eq(" + i + ")").find(".J_ItemPic").attr("src");

arr.push(obj);

}

return arr;

});

console.log(JSON.stringify(data))

//把从页面拿到的数据传给自己的接口去处理数据

page.open('http://localhost:8080/data/data/sku_stock', 'POST', "data=" + data, function (status) {

console.log('去ares-chart处理数据了');

});

});

}, 5000);

}

});

  -------------------------结束--------------------- ----------------

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线