本篇文章为大家展示了怎么在Node.JS中利用PhantomJs对网页进行抓取,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
创新互联公司是一家集网站建设,西平企业网站建设,西平品牌网站建设,网站定制,西平网站建设报价,网络营销,网络优化,西平网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。前言
当想用 nodejs 抓取一些网页 , 我第一反应想到的就是使用 http 模块 , 比如抓取百度首页:
var http = require('http'); var req = http.request('http://www.baidu.com/', function (res) { res.setEncoding('utf8'); res.on('data', function (chunk) { //响应内容 console.log(chunk) }); }); req.end(function () { // console.log('连接关闭'); });
但是 , 这仅限于简单地抓取 html , 有很大的局限性。
假如你想要的内容不在 html 里 , 而是 js 动态生成的 , 那 http 模块就不能满足你的需求了 ;
假如网页使 gbk 编码的 , 上述方法也不太好用了。
假如是 https 上述方法也要改一改了。
我渴望一个更强大 , 但使用起来也不麻烦的工具。
PhantomJs
用 PhantomJs 就可以解决上述问题。
PhantomJs 就是一个没有界面的浏览器。
安装
使用 cnpm 安装 PhantomJS 即可:
cnpm install phantomjs --save-dev
这里我没有选择全局安装 , 因为全局安装的话 , 别人使用我的源码的时候 , 不知道还有这么一个依赖 , 项目就跑不起来了。
如果你也选择局部安装 , 那么你需要在 package.json 里的 scripts 中加入一段 :
"phantomjs":"node_modules/.bin/phantomjs"
等下会用到这个的 , 到这里 , 安装算完成了。
写代码
我们新建一个文件 , 名字随意 , 这里我新建一个 main.js :
var webpage = require('webpage'); var page = webpage.create(); page.open('http://www.baidu.com/', function (status) { var data; if (status === 'fail') { console.log('open page fail!'); } else { console.log(page.content);//打印出HTML内容 } page.close();//关闭网页 phantom.exit();//退出phantomjs命令行 });
这里有个 webpage 模块 , 我们刚才明明没有这个模块 , 为什么能引用这个模块 ???
当然不能引用 , 假如我们使用node main.js
来跑这段代码 , 是跑不起来的 , 应该这样运行这段代码 :
npm run phantomjs main.js
这里的npm run phantomjs
对应的就是前面我们在 package.json 里加入的那段命令 , 很方便吧 , 几乎和 http 模块一样方便。
page.content 就是 html 代码了 , 这个 page 对象还有很多的属性 , 功能更强大。
到这里 , 你就已经算入门了 , 想知道更多可以去 phantomjs 官网看看文档了。
上述内容就是怎么在Node.JS中利用PhantomJs对网页进行抓取,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联网站建设公司行业资讯频道。
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。