node可以做爬虫,下面我们来看一下如何使用node来做一个简单的爬虫。

node做爬虫的优势:

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

第二就是nodejs是单线程异步的,一个页面未返回不会阻塞其它页面加载。

node做爬虫的劣势:

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

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

下面就要说一下如何用nodejs做爬虫了

1、初始化项目文件

在对应的项目文件夹下执行npm init来初始化一个package.json文件

2、安装request和cheerio依赖包

request听起来很熟悉吧,跟python里request功能一样。它的功能就是建立起对目标网页的链接,并返回相应的数据,这个不难理解。

cheerio的功能是用来操作dom元素的,他可以把request返回来的数据转换成可供dom操作的数据,更重要的cheerio的api跟jquery一样,用$来选取对应的dom结点,是不很方便?对一个前端程序员来说,这比python的什么xpath和beautisoup方便了不知道多少啊哈哈

安装命令也很简单,分别是npm install request --save和npm install cheerio

3、引入依赖包并使用

接下来就用request和cherrio写一个爬虫吧!

首先引入依赖var request = require("request");

var cheerio = require("cheerio");

接下来就以爬取我们学校的新闻页为例吧,我们学校的新闻页面链接是http://news.shu.edu.cn/Default.aspx?tabid=446

然后调用request的接口request('http://news.shu.edu.cn/Default.aspx?tabid=446',function(err,result){

if(err){

console.log(err);

}

console.log(result.body);

})

将request返回的结果传入cheerio中,并获得想要获取的信息request('http://news.shu.edu.cn/Default.aspx?tabid=446',function(err,result){

if(err){

console.log(err);

}

var $ = cheerio.load(result.body);

$('a[id^="dnn"]').each(function(index,element){

console.log($(element).text());

})

})

4、设置请求头

具体事例代码如下:var options = {

url: startUrl+'?page=1',

method: 'GET',

charset: "utf-8",

headers: {

"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64)

AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36",

"cookie": cookies

}

};

request(options,function(err,response,body){

//...

})

5、并发控制

爬取一个页面还好,要是页面多了就是无限制并发了,那肯定就要被封了,所以就要有一个并发控制,这里要介绍的就是async。跟上述一样要通过npm install async --save来安装并通过var async = require("async")来引入。

具体以一个限制并发的方式来示例一下async.mapLimit(5,function(url,callback)){

//...

fetch(url,callback)

})

python和node爬虫_node可以做爬虫吗?相关推荐

  1. python的爬虫库_python做爬虫常用库

    python做爬虫常用库 一.总结 一句话总结: urllib:一系列用于操作URL的功能. requests:基于 urllib 编写的,阻塞式 HTTP 请求库,发出一个请求,一直等待服务器响应后 ...

  2. PHP系统能不能加爬虫,php能做爬虫吗

    phpspider一款优秀的PHP开发蜘蛛爬虫 编写PHP网络爬虫,需要具备以下技能: 爬虫采用PHP编写(推荐学习:PHP视频教程) 从网页中抽取数据需要用XPath ( XPath选择器教程 ) ...

  3. python爬取网页数据流程_Python爬虫爬取数据的步骤

    爬虫: 网络爬虫是捜索引擎抓取系统(Baidu.Google等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 步骤: 第一步:获取网页链接 1.观察需要爬取的多 ...

  4. python中 getnode用法_node.js 爬虫入门总结

    node.js爬虫 前端同学可能向来对爬虫不是很感冒,觉得爬虫需要用偏后端的语言,诸如 php , python 等.当然这是在 nodejs 前了,nodejs 的出现,使得 Javascript ...

  5. python爬取淘宝商品做数据挖掘_Python 3爬虫 数据清洗与可视化实战 Python数据抓取技术 python3网络爬虫教程书籍 运用Python工具获取电商平台页面数据挖掘书籍...

    A8 书    名:Python 3爬虫 数据清洗与可视化实战 作 译 者:零一,韩要宾,黄园园 出版时间:2018-03 千 字 数:200 版    次:01-01 页    数:212 开   ...

  6. python爬虫数据分析可以做什么-自学Python爬虫学到什么程度?就可以去找工作了?...

    python 爬虫学到什么程度可以去找工作了,关于这点,和大家分享下我的理解. 确立目标.了解需求 首先我们要先定位自己的目标,当然我们先以爬虫工程师来做个说明. 去招聘网上看看需求都有哪些,直接做个 ...

  7. php和python写爬虫-为什么选择用python做爬虫

    什么是网络爬虫? 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当 ...

  8. 爬虫python下载视频_用python做爬虫下载视频

    用python有一段时间了,对python是十二分喜爱,在我看来python是个好工具,可以轻松简洁的帮我完成一些我想要完成的工作.下面和大家分享一下我用python爬取某网站视频的案例.用pytho ...

  9. 爬虫python能做什么-Python除了能做爬虫之外还能做什么?

    原标题:Python除了能做爬虫之外还能做什么? 1.web开发python拥有非常完善的与web服务器进行交互的库,以及大量的免费的前端网页模板.更具优势的是,有非常优秀且成熟的Django Web ...

最新文章

  1. JAVA中字符串连接效率的测试(续)
  2. 如此智能的Windows Embedded Standard 7
  3. 10-30SQLserver基础--(备份和还原、分离和附加数据库)、语句查询操作
  4. html图片自动切换的幻灯片效果的,js带点自动图片轮播幻灯片特效代码分享
  5. keepalived实现双机备份
  6. 大数据学习笔记21:MR案例——分区全排序
  7. 湖南工业大学c语言在线作业答案,湖南工业大学C语言期末考试复习题(机房题库)...
  8. python用什么来写模块-Python常用模块——模块介绍与导入
  9. Visio2016下载激活破解
  10. DBeaver-调整字体
  11. 使用AD域管理您的本地计算机密码
  12. 国外5G行业应用产业政策分析及对我国的启示
  13. 人工智能导论测试题——第六章 进化智能与群体智能(2)
  14. 授课型英硕申请Ph.D (带奖)历程
  15. 2021-03-22 unI-app 前端直播推流实现
  16. 手机端怎么把PDF格式文件转换成图片
  17. PyTorch读取自己的本地图片数据集训练自编码器
  18. Weblogic WLS Core Components 反序列化命令执行漏洞复现(CVE-2018-2628)
  19. windows下域名解析及修改hosts文件不起作用的问题解决
  20. 微信小游戏子域中请求微信头像,cocos create会自动添加前缀的问题

热门文章

  1. 双目立体匹配_StereoNet网络
  2. 咱们看见是水,饿鬼看见是火,天人看见是琉璃
  3. 昨天,微软加更.NET7中文手册,都有哪些新亮点?
  4. vue3路由跳转方法
  5. 计算机表格有多少列多少行,『Excle 2016最大行』Excel2016一张工作表包含多少行,多少列,多少单元格...
  6. 储罐液位开关c语言编程,基于PLC的储罐液位控制系统研究.doc
  7. 从servlet传值到jsp页面
  8. 线上cpu飙高,死锁查询
  9. 影响网站收录排名的隐患因素
  10. [jzoj 6316] djq的朋友圈 {状态压缩}