博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node 简单的爬虫
阅读量:6328 次
发布时间:2019-06-22

本文共 2129 字,大约阅读时间需要 7 分钟。

基于express爬虫,

1,node做爬虫的优势

首先说一下node做爬虫的优势

第一个就是他的驱动语言是JavaScript。JavaScript在nodejs诞生之前是运行在浏览器上的脚本语言,其优势就是对网页上的dom元素进行操作,在网页操作上这是别的语言无法比拟的。

第二就是nodejs是单线程异步的。听起来很奇怪,单线程怎么能够异步呢?想一下学操作系统的时候,单核cpu为什么能够进行多任务处理?道理也是类似,在操作系统中进程对CPU的占有进行时间切片,每一个进程占有的时间很短,但是所有进程循环很多次,因此看起就像是多个任务在同时处理。js也是一样,js里有事件池,CPU会在事件池循环处理已经响应的事件,未处理完的事件不会放到事件池里,因此不会阻塞后续的操作。在爬虫上这样的优势就是在并发爬取页面上,一个页面未返回不会阻塞后面的页面继续加载,要做到这个不用像python那样需要多线程。

其次是node的劣势

首先是异步并发上。处理的好很方便,处理的不好就会很麻烦。例如要爬取10个页面,用node不做异步处理话,那返回的结果可不一定是按1、2、3、4……这个顺序,很可能是随机。解决的办法就是增加一个页面的序列戳,让爬取的数据生成csv文件,然后重新排序。

第二个是数据处理上的劣势,这点是不如python的,如果只是单纯的爬数据,用node当然很好,但是如果用爬来的数据继续做统计分析,做个回归分析聚类啥的话,那就不能用node一步到底了。

 

二,爬虫步骤

1,express安装node的环境

$ mkdir myapp
$ cd myapp
$ npm init===生成package.json 文件
$ npm install express --save=======保存在依赖表中
$ npm install express============临时安装

2依赖包的安装

var request = require('request');
var cheerio = require('cheerio');
放到依赖包的命令
 
npm install request --save

npm  install cheerio --save

了解官网

3,使用说明:

*request的使用说明,请求的状态成功的状态----200

var request 
= 
require(
'request');
request(
'http://www.google.com'
function (
error
response
body) {
  console.
log(
'error:', error); 
// Print the error if one occurred
  console.
log(
'statusCode:', response 
&& 
response.
statusCode); 
// Print the response status code if a response was received
  console.
log(
'body:', body); 
// Print the HTML for the Google homepage.
});
*
cheerio ------类似jquery的使用方法

 

const $ = cheerio.load(body);
let data = [];
// 下面就是和jQuery一样获取元素,遍历,组装我们需要数据,添加到数组里面
$('#xy-impcon ul li').each(function (i, elem) {
let _this = $(elem);
data.push({
url: _this.find('a').attr('href').replace(/\/p\//, ""),
content: _this.find('a').text(),
});
});
3,文件读取将数据下载到本地
*__dirname  当前的跟目录
var fs = require('fs');
fs.writeFile(__dirname + '/data/article.json', JSON.stringify({
status: 0,
data: data
}), function (err) {
if (err) throw err;
console.log('写入完成');
});
4, 每个网站都有一个安全隐私,不让别人进行爬取,各大网站都可以查找这个文件
robots.txt—>这个文件告诉你不能爬的内容
爬虫的额外了解
1,微博的url ——》拼接一些关键字————httpget请求解析微博的内容——垂直——过滤——存储   (规定在一定的时间内进行轮询访问)
1,封号的处理——》代理ip(是否被封号)——进行一个标识对于有用的ip进行过滤
爬虫的用处
可以用于商业,通过数据分析用户行为,情感的变化,进行的处理

转载于:https://www.cnblogs.com/yayaxuping/p/9720547.html

你可能感兴趣的文章
C语言学习-进制转换、变量
查看>>
Base64编码及其作用
查看>>
20172304 2017-2018-2 《程序设计与数据结构》实验五报告
查看>>
第六周学习总结
查看>>
20个数据库设计的最佳实践
查看>>
C# async
查看>>
C语言博客作业02--循环结构
查看>>
图片时钟
查看>>
Unity-2017.3官方实例教程Space-Shooter(一)
查看>>
makefile中重载与取消隐藏规则示例
查看>>
Linux 内核版本号查看
查看>>
4-3 简单求和 (10分)
查看>>
Python环境部署
查看>>
[BZOJ1927]星际竞速(费用流)
查看>>
PowerDesigner添加表注释
查看>>
使用VMware安装Ubuntu虚拟机,创建后开启显示黑屏的解决方法
查看>>
Java数据结构与算法(11) - ch06递归(二分法查找)
查看>>
文件操作
查看>>
this的指向
查看>>
Object类及其常用方法简介
查看>>