用node写的爬虫(一版)
来源:互联网 发布:python 双引号 变量 编辑:程序博客网 时间:2024/05/05 15:00
node爬虫
步骤1:正所谓“工欲善其事,必先利其器”
1)下载nodejs
2)下载JavaScript编辑器sublime
步骤2:建立工程
1)创建项目目录(我取做node_maricle)
2)在项目文件下npm init(一路Enter就行了,当然命名还是要的),完成后会生成一个package.json的文件。该文件包含了项目的基本信息。
3)安装第三方包(后面程序会直接调用包的模块)
说明:由于http模块、fs模块都是内置的包,因此不需要额外添加。
这里安装cheerio包(可以直接解析获取的html节点),和request包。
在项目文件中shift+右键进入dos中,然后
npm install cheerio –save
安装完cheerio包后,继续安装request包,
npm install request –save
说明:npm(nodejs package manager),nodejs包管理器;
–save的目的是将项目对该包的依赖写入到package.json文件中。(-g是全局安装)
现在才进入正题,爬取学校网站的学生信息。
创建子文件夹data(用来存信息)
var http = require('http');//好像没用到var fs = require('fs');//文件操作var cheerio = require('cheerio');//解析htmlvar request = require('request');//request请求var request = request.defaults({jar: true});//!!!!特别注意这里,默认情况下,cookies是禁用的。在defaults或options将jar设为true,使后续的请求都使用cookie.var all="";var i=999;request.post('http://hnust.hunbys.com/index.php/home/Public/mlogin.html', function (error, response, body) { if (!error && response.statusCode == 200) { console.log('登录成功!') start('http://hnust.hunbys.com/index.php/course/Index/userinfo/id/12740.html'); }}).form({email: myemail, password: mypassword})//function start(url){ i++; request.get(url, function (error, response, body) { if (!error && response.statusCode == 200) { var $ = cheerio.load(body); //采用cheerio模块解析html var name = $(".pull-left h2").text().trim().substr(0,4); var xueyuan = $(".zy_course_rl").children().eq(0).text().trim().substr(17,15); var three = $(".zy_course_rl").children().eq(1).text().trim(); indexm = three.indexOf("专业:"); indexl = three.indexOf("|"); var zhuanye = three.slice(indexm,indexl)//专业 indexbj = three.indexOf("班级:") var banji = three.substr(indexbj,10); var sfz = $(".zy_course_rl").children().eq(2).text().trim().substr(3,18); var dh = $(".zy_course_rl").children().eq(3).text().trim(); all += "姓名:"+name + xueyuan +" "+zhuanye +sfz+dh+"\n"; console.log(all); if (i=2000) { savedContent($,all); } } }) var nextLink="http://hnust.hunbys.com/index.php/course/Index/userinfo/id/" + i+".html"; if (i <= 2000) { start(nextLink); }}function savedContent($, news_title) { //将新闻文本内容一段一段添加到/data文件夹下,并用新闻的标题来命名文件 fs.writeFile('./data/data2.txt', all, 'utf-8', function (err) { if (err) { console.log(err); } });}
0 0
- 用node写的爬虫(一版)
- 用node写的爬虫(二版)
- 用node.js写的http小爬虫
- 用node从零开始去写一个简单的爬虫
- 一起学爬虫 Node.js 爬虫篇(一)
- 随手写个node爬虫
- Python,写爬虫时遇到的问题笔记(一)
- node.js 教你写爬虫(附上gbk,gb2312中文乱码的解决方法)
- 用Python写网络爬虫系列(一)
- 写网络爬虫学python(一)
- Python写爬虫技巧(一):总
- 学习python写网络爬虫(一)
- python 写爬虫 美女照片(一)
- WSWP(用python写网络爬虫)笔记 一:实现简单爬虫
- 一只node爬虫的升级打怪之路
- node爬虫案例(经典版)
- 爬虫爬虫爬虫(一)
- 写一网络爬虫有感
- Marvell宣战博通网络交换芯片,一大波饿狼扑食而来
- BZOJ4589: Hard Nim
- 自定义图片加载器
- 牛客网——合并两个排序的链表
- Linux 常用命令(待补充)
- 用node写的爬虫(一版)
- 免sudo使用docker命令
- Windows Server 2008 DNS服务器安装与配置
- pentaho 报表实现动态sql——利用ECMAScript
- TCP 长连接小尝试
- qt5 cannot find -lGL解决方法
- java实现二维数组按列遍历
- Android 极光推送
- 平方怪圈