python和node爬虫_node可以做爬虫吗?
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可以做爬虫吗?相关推荐
- python的爬虫库_python做爬虫常用库
python做爬虫常用库 一.总结 一句话总结: urllib:一系列用于操作URL的功能. requests:基于 urllib 编写的,阻塞式 HTTP 请求库,发出一个请求,一直等待服务器响应后 ...
- PHP系统能不能加爬虫,php能做爬虫吗
phpspider一款优秀的PHP开发蜘蛛爬虫 编写PHP网络爬虫,需要具备以下技能: 爬虫采用PHP编写(推荐学习:PHP视频教程) 从网页中抽取数据需要用XPath ( XPath选择器教程 ) ...
- python爬取网页数据流程_Python爬虫爬取数据的步骤
爬虫: 网络爬虫是捜索引擎抓取系统(Baidu.Google等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 步骤: 第一步:获取网页链接 1.观察需要爬取的多 ...
- python中 getnode用法_node.js 爬虫入门总结
node.js爬虫 前端同学可能向来对爬虫不是很感冒,觉得爬虫需要用偏后端的语言,诸如 php , python 等.当然这是在 nodejs 前了,nodejs 的出现,使得 Javascript ...
- python爬取淘宝商品做数据挖掘_Python 3爬虫 数据清洗与可视化实战 Python数据抓取技术 python3网络爬虫教程书籍 运用Python工具获取电商平台页面数据挖掘书籍...
A8 书 名:Python 3爬虫 数据清洗与可视化实战 作 译 者:零一,韩要宾,黄园园 出版时间:2018-03 千 字 数:200 版 次:01-01 页 数:212 开 ...
- python爬虫数据分析可以做什么-自学Python爬虫学到什么程度?就可以去找工作了?...
python 爬虫学到什么程度可以去找工作了,关于这点,和大家分享下我的理解. 确立目标.了解需求 首先我们要先定位自己的目标,当然我们先以爬虫工程师来做个说明. 去招聘网上看看需求都有哪些,直接做个 ...
- php和python写爬虫-为什么选择用python做爬虫
什么是网络爬虫? 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当 ...
- 爬虫python下载视频_用python做爬虫下载视频
用python有一段时间了,对python是十二分喜爱,在我看来python是个好工具,可以轻松简洁的帮我完成一些我想要完成的工作.下面和大家分享一下我用python爬取某网站视频的案例.用pytho ...
- 爬虫python能做什么-Python除了能做爬虫之外还能做什么?
原标题:Python除了能做爬虫之外还能做什么? 1.web开发python拥有非常完善的与web服务器进行交互的库,以及大量的免费的前端网页模板.更具优势的是,有非常优秀且成熟的Django Web ...
最新文章
- JAVA中字符串连接效率的测试(续)
- 如此智能的Windows Embedded Standard 7
- 10-30SQLserver基础--(备份和还原、分离和附加数据库)、语句查询操作
- html图片自动切换的幻灯片效果的,js带点自动图片轮播幻灯片特效代码分享
- keepalived实现双机备份
- 大数据学习笔记21:MR案例——分区全排序
- 湖南工业大学c语言在线作业答案,湖南工业大学C语言期末考试复习题(机房题库)...
- python用什么来写模块-Python常用模块——模块介绍与导入
- Visio2016下载激活破解
- DBeaver-调整字体
- 使用AD域管理您的本地计算机密码
- 国外5G行业应用产业政策分析及对我国的启示
- 人工智能导论测试题——第六章 进化智能与群体智能(2)
- 授课型英硕申请Ph.D (带奖)历程
- 2021-03-22 unI-app 前端直播推流实现
- 手机端怎么把PDF格式文件转换成图片
- PyTorch读取自己的本地图片数据集训练自编码器
- Weblogic WLS Core Components 反序列化命令执行漏洞复现(CVE-2018-2628)
- windows下域名解析及修改hosts文件不起作用的问题解决
- 微信小游戏子域中请求微信头像,cocos create会自动添加前缀的问题
热门文章
- 双目立体匹配_StereoNet网络
- 咱们看见是水,饿鬼看见是火,天人看见是琉璃
- 昨天,微软加更.NET7中文手册,都有哪些新亮点?
- vue3路由跳转方法
- 计算机表格有多少列多少行,『Excle 2016最大行』Excel2016一张工作表包含多少行,多少列,多少单元格...
- 储罐液位开关c语言编程,基于PLC的储罐液位控制系统研究.doc
- 从servlet传值到jsp页面
- 线上cpu飙高,死锁查询
- 影响网站收录排名的隐患因素
- [jzoj 6316] djq的朋友圈 {状态压缩}