phantomjs连接mysql_PhantomJS初探

最近想写一个程序爬网页接口的数据,由于本人是前端开发者,对于后端的一些爬虫工具不甚了解。首先所爬接口需要动态的在url加query参数,爬取数据。其次为了防止接口被封我初步设想希望能后定时爬取接口,比如间隔500ms爬取一条数据,而且每天爬取一次。开始我是开发一个网页,每天打开里面的js脚本自动执行请求接口,然后将请求的接口数据保存到后台mysql数据库中。这种方法需要人工每天打开网页进行爬取。于是翻阅资料了解phantomjs可以实现我想要的功能。

正常的网页我们需要浏览器打开才能访问,但是通过phontomjs的虚拟浏览器环境可以在后端打开一个网页,可以正常的执行js,生成dom。这样就可以在后端打开一个网页,并且使用pm2守护进程,保持网页一直打开,在网页js中设置定时器,每天固定时间出发爬取动作。

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

system = require('system'),

address;

address = system.args[1];

var url = 'http://*******';

//init and settings

page.settings.resourceTimeout = 30000 ;

page.settings.XSSAuditingEnabled = true ;

//page.viewportSize = { width: 1000, height: 1000 };

page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36';

page.customHeaders = {

"Connection" : "keep-alive",

"Cache-Control" : "max-age=0",

"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",

"Accept-Language": "zh-CN,zh;q=0.8,en;q=0.6",

};

page.open(url, function() {

console.log(url);

console.log('begin');

});

//加载页面完毕运行

page.onLoadFinished = function(status) {

console.log('Status: ' + status);

console.log(page.content);

//phantom.exit();

};

如上代码,webpage是phantomjs的核心模块,他可以模拟浏览器打开网页的动作,比如page.setting.userAgent可以设置ua,page.setting.customHeader可以模拟浏览器的请求头部参数,page.open是请求网页,page.onLoadFinished 是网页加载完成的回调函数。

pnontomjs还可以做很多其他的工作。比如网页截图,可以将目标网站的网页整个ui截图保存本地。抓取网页的图片。最重要的是可以用来分析网页的性能,因为它可以监听网页不同的状态,提供相应的回调函数,例如 page.onInitialized,page.onLoadStarted,page.onLoadFinished等监听网页状态的回调函数,可以通过在这些回调函数中埋点,记录时间,就可以用来分析网页的性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值