前言:
一直对node.js有兴趣,但因为时间关系,却一直没有坚持下去,平时都是拿node.js打包做一些杀鸡用牛刀的事情,最近终于下狠心挤出游戏的时间来学习node.js。干学不动手没个意思,看网上爬虫那么火,也来趁一把热度,分享更是记录一下自己学习node.js的经历。
一.目标
目标网站:知乎
说明:爬取知乎某个问题下所有除用户头像的图片,存储到本地文件夹。
二.准备工作
想根据本文学习node爬虫的童鞋注意:本文需要一点es6基础,因为这个node爬虫是基于es6写的。
三.依赖包
cheerio:cheerio的用法在网上有很多,cheerio可以让我们很方便的处理爬虫爬取的数据,简单来说你会用jQuery就会用cheerio。给个地址:https://cnodejs.org/topic/5203a71844e76d216a727d2e
superagent:一个http请求,网上也有很多,基本用法都能找得到。给个地址:https://cnodejs.org/topic/5378720ed6e2d16149fa16bd
主要是依赖以上两个包,基本用法懂就可以了。
给出package.json:
{
"name": "Crawler",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./app"
},
"dependencies": {
"babel": "^6.23.0",
"babel-cli": "^6.24.1",
"babel-preset-stage-3": "^6.22.0",
"babel-register": "^6.24.0",
"babel-core": "^6.25.0",
"babel-preset-es2015": "^6.24.1",
"body-parser": "~1.16.0",
"cookie-parser": "~1.4.3",
"debug": "~2.6.0",
"ejs": "~2.5.5",
"express": "~4.14.1",
"morgan": "~1.7.0",
"nodemailer": "^4.0.1",
"nodemailer-smtp-transport": "^2.7.4",
"serve-favicon": "~2.3.2",
"async": "^2.0.0-rc.6",
"cheerio": "^0.20.0",
"eventproxy": "^0.3.4",
"superagent": "^2.0.0"
},
"devDependencies": {
"babel-plugin-transform-async-to-generator": "^6.24.1",
"babel-plugin-transform-es2015-classes": "^6.24.1",
"babel-plugin-transform-es2015-modules-commonjs": "^6.24.1",
"babel-plugin-transform-export-extensions": "^6.22.0",
"iconv-lite": "^0.4.19",
"jsonwebtoken": "^7.3.0",
"mongoose": "^4.9.5"
}
}
四.了解目标网站
想要爬取网站,首先你得了解该网站的结构。
知乎需要登录验证身份,每个问题下的答案都是ajax请求。
我们只需要找到这个ajax,然后在用superagent发起请求就行了,听起来很简单吧。
了解目标网站,我说的有些简单了(主要是偷懒),给出个python爬取知乎分析网站的案例:https://zhuanlan.zhihu.com/p/28190133 我也是看了该文后,才想用node来爬取知乎的。网上也找了下没有node爬知乎图片的案例,只有自己捣鼓一个。需注意该案例与现在知乎网站的结构有一点不一样了。
五.爬取主要代码分析
作者: woshiajuana
链接:https://www.imooc.com/article/22483
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
共同学习,写下你的评论
评论加载中...
作者其他优质文章