第一步:分析要爬的网站:包括是否需要登陆、点击下一页的网址变化、下拉刷新的网址变化等等
第二步:根据第一步的分析,想好爬这个网站的思路
第三步:爬好所需的内容 保存
爬虫过程中用到的一些包:
(1)const request = require('superagent'); // 处理get post put delete head 请求 轻量接http请求库,模仿浏览器登陆
(2)const cheerio = require('cheerio'); // 加载html
(3)const fs = require('fs'); // 加载文件系统模块 将数据存到一个文件中的时候会用到
fs.writeFile('saveFiles/zybl.txt', content, (error1) => { // 将文件存起来 文件路径 要存的内容 错误
if (error1) throw error1;
// console.log(' text save ');
});
this.files = fs.mkdir('saveFiles/simuwang/xlsx/第' + this.page + '页/', (error) => {
if (error) throw error;
}); //创建新的文件夹
//向新的文件夹里面创建新的文件
const writeStream = fs.createWriteStream('saveFiles/simuwang/xlsx/' + '第' + this.page + '页/' + xlsxTitle + '.xlsx', ['a']);
//向新的文件里面写入内容
for (let i = 0; i < value1.length; i += 1) {
writeStream.write(xlsxTitle + '\t' + this.getLocalTime(value1[i][0] / 1000)
+ '\t' + value1[i][1] + '\t' + this.getLocalTime(value2[i][0] / 1000)
+ '\t' + value2[i][1] + '\t' + this.getLocalTime(value3[i][0] / 1000)
+ '\t' + value3[i][1] + '\t');
}
//写入完内容之后及时关闭流,如果不关闭,当爬取很多的文件的时候会出现错误,文件里面写不进去内容
writeStream.end();
(4)const fs = require('graceful-fs'); // 将文件存为xlse
const writeStream = fs.createWriteStream('saveFiles/trader.xlsx'); //新建xlsx文件
writeStream.write(title);//像slsx里面写入内容
(5)const Promise = require('bluebird'); //异步处理
(6)const Nightmare = require('nightmare');//一个高层次的浏览器自动化图书馆 先要安装phantomjs 然后在装nightmare
(7)const co = require('co');
爬虫的相关思路:
(1)获取首页面的所需内容
(2)在首页面的所有内容里面获取所需内容的链接
(3)将(2)里面的链接存到一个list里面去
(3)新写一个function,采用.pop()方法,用来取通过链接得到的新的内容
(4)判断list.length是否大于0,
(5)如果不是,开始爬子页面 并且调用该方法
(6)如果list的长度为0,就说明这一页爬完了,开始下一页,则将url改变
(7)重复(2)(3)(4)(5)(6)直至所有页面爬完