js爬虫心得
第一步:分析要爬的网站:包括是否需要登陆、点击下一页的网址变化、下拉刷新的网址变化等等
第二步:根据第一步的分析,想好爬这个网站的思路
第三步:爬好所需的内容 保存
爬虫过程中用到的一些包:
(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)直至所有页面爬完
js爬虫心得的更多相关文章
- Node.js爬虫-爬取慕课网课程信息
第一次学习Node.js爬虫,所以这时一个简单的爬虫,Node.js的好处就是可以并发的执行 这个爬虫主要就是获取慕课网的课程信息,并把获得的信息存储到一个文件中,其中要用到cheerio库,它可以让 ...
- node.js爬虫
这是一个简单的node.js爬虫项目,麻雀虽小五脏俱全. 本项目主要包含一下技术: 发送http抓取页面(http).分析页面(cheerio).中文乱码处理(bufferhelper).异步并发流程 ...
- Node.js aitaotu图片批量下载Node.js爬虫1.00版
即使是https网页,解析的方式也不是一致的,需要多试试. 代码: //====================================================== // aitaot ...
- Node.js umei图片批量下载Node.js爬虫1.00
这个爬虫在abaike爬虫的基础上改改图片路径和下一页路径就出来了,代码如下: //====================================================== // ...
- Node.js abaike图片批量下载Node.js爬虫1.01版
//====================================================== // abaike图片批量下载Node.js爬虫1.01 // 1.01 修正了输出目 ...
- Node.js abaike图片批量下载Node.js爬虫1.00版
这个与前作的差别在于地址的不规律性,需要找到下一页的地址再爬过去找. //====================================================== // abaik ...
- Node JS爬虫:爬取瀑布流网页高清图
原文链接:Node JS爬虫:爬取瀑布流网页高清图 静态为主的网页往往用get方法就能获取页面所有内容.动态网页即异步请求数据的网页则需要用浏览器加载完成后再进行抓取.本文介绍了如何连续爬取瀑布流网页 ...
- 微信小程序js学习心得体会
微信小程序js学习心得体会 页面控制的bindtap和catchtap 用法,区别 <button id='123' data-userDate='100' bindtap='tabMessag ...
- Node.js 爬虫爬取电影信息
Node.js 爬虫爬取电影信息 我的CSDN地址:https://blog.csdn.net/weixin_45580251/article/details/107669713 爬取的是1905电影 ...
随机推荐
- 关于Unity3D手机网游开发一些小看法
它的知识技能和职责,我就不仔细说了,说细了有一点像招聘启示.他的主要职责虽然负责技术,但是也给产品决策和方向提供一些决策.他最主要的考核指标,就是经验很重要,最好主导或参与过一款网络游戏的开发.举个例 ...
- Linux常用命令[转]
在博客的草稿箱里一直有一份"Linux命令"的草稿,记录了一些常用的Linux命令,用于需要的时候查询.由于是出于个人使用的目的,所以这个清单并不完整.今天整理了一下这个清单,调整 ...
- zTree的内核
zTree的内核: * 结构 (function($){ //常量部分 //申明常量是因为这些数据是不能改变的,如果成了对象的属性,很容易就改 ...
- 视图UIView的大小和位置属性详解
UIView类中定义了三个属性,分别是frame.bounds与center属性: IKit中的坐标系X轴正方向为水平向右,Y轴正方向为竖直向下. frame属性指的是视图在其父视图坐标系中的位置与尺 ...
- 临时存存储页面上的数据---Web存储
HTML5 Web存储的两种方法使用 localStorage和sessionStorage 参考: http://www.cnblogs.com/taoweiji/archive/2012/12/0 ...
- ui-grid
html代码: <html ng-app="myApp"> <head> <meta charset="utf- ...
- iOS 面试题(五):weak 的内部实现原理 --转自唐巧
问题 weak 变量在引用计数为0时,会被自动设置成 nil,这个特性是如何实现的? 答案 在 Friday QA 上,有一期专门介绍 weak 的实现原理.https://mikeash.com/p ...
- 使用jsonp跨域请求后可以获得数据,但是进入error方法,返回parseerror
$.ajax({ url:url, dataType:'jsonp', jsonp: 'callback',//回调函数名字 jsonpCallback: 'success_jsonpCallback ...
- 原生node的header
首先引入http模块 获取http.ServerResponse对象的方式,1.http.createServer(function(req,res){}) 其中res是http.ServerResp ...
- MQTT——java简单测试(二)
服务端代码: package bsit.mqtt.demo.one_way; import org.eclipse.paho.client.mqttv3.MqttClient; import org. ...