爬虫其实就是模仿浏览器访问页面,然后把页面保存起来备用。


爬虫的方法,直接上代码:

function getUrl(url,success,error){
let urlObj = urlParser.parse(url);
let mod = null;
//判断用是哪个协议,对应用哪个模块
if(urlObj.protocol=='http:'){
mod = require('http');
}else{
mod = require('https');
}
let req = mod.request({
hostname: urlObj.hostname,
path: urlObj.path
},res=>{
//如果是200表示成功,则把buffer用数组存起来,end的时候发给success回调
if(res.statusCode==200){
let arr=[];
res.on('data',buffer=>{
arr.push(buffer);
})
res.on('end',_=>{
let b = Buffer.concat(arr);
success && success(b);
})
}
// 如果是重定向,拿到重定向地址res.headers.location,递归自己
else if(res.statusCode==301||res.statusCode==302){
getUrl(res.headers['location'],success,error)
}
//其他则是出错了
else{
error && error(res.statusCode);
}
})
req.end();
req.on('error',err=>{
error && error(err);
})
}

上面的方法普通页面够用了,但是有些页面有些奇怪,例如天猫,编码是gbk,所以我们需要用把buffer进行gbk解码:

const gbk = require('gbk');
//把gbk Buffer解码并编码成utf8字符串
gbk.toString('utf-8',buffers)

获得html字符串后,我们通常的做法就是写正则来匹配,这样无疑是极其麻烦的,我们有一个node组件叫jsdom就让我们在node里面实现了获取dom的操作:

const jsdom = require('jsdom').JSDOM;

let document = (new jsdom(htmlStr)).window.document;

//之后可以用queryselector、getElementById。。。。。

node爬虫入门的更多相关文章

  1. 爬虫入门二 beautifulsoup

    title: 爬虫入门二 beautifulsoup date: 2020-03-12 14:43:00 categories: python tags: crawler 使用beautifulsou ...

  2. Python简单爬虫入门三

    我们继续研究BeautifulSoup分类打印输出 Python简单爬虫入门一 Python简单爬虫入门二 前两部主要讲述我们如何用BeautifulSoup怎去抓取网页信息以及获取相应的图片标题等信 ...

  3. Python爬虫入门一之综述

    大家好哈,最近博主在学习Python,学习期间也遇到一些问题,获得了一些经验,在此将自己的学习系统地整理下来,如果大家有兴趣学习爬虫的话,可以将这些文章作为参考,也欢迎大家一共分享学习经验. Pyth ...

  4. Python简单爬虫入门二

    接着上一次爬虫我们继续研究BeautifulSoup Python简单爬虫入门一 上一次我们爬虫我们已经成功的爬下了网页的源代码,那么这一次我们将继续来写怎么抓去具体想要的元素 首先回顾以下我们Bea ...

  5. GJM : Python简单爬虫入门(二) [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  6. 继续node爬虫 — 百行代码自制自动AC机器人日解千题攻占HDOJ

    前言 不说话,先猛戳 Ranklist 看我排名. 这是用 node 自动刷题大概半天的 "战绩",本文就来为大家简单讲解下如何用 node 做一个 "自动AC机&quo ...

  7. Node.js 入门手册:那些最流行的 Web 开发框架

    这篇文章与大家分享最流行的 Node.js Web 开发框架.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编 ...

  8. 【特别推荐】Node.js 入门教程和学习资源汇总

    这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...

  9. 让我们一起学习《Node.js入门》一书吧!

    Node.js入门 读完本书之后,你将完成一个完整的web应用,该应用允许用户浏览页面以及上传文件. 里面对一些知识的讲解,让你略窥Node.js的门径.最好一段代码一段代码的写下来,我的习惯是手里拿 ...

随机推荐

  1. MIT一牛人对数学在机器学习中的作用给的评述

    MIT一牛人对数学在机器学习中的作用给的评述 转载自http://my.oschina.net/feedao/blog/52252,不过这个链接也是转载的,出处已经无从考证了.   感觉数学似乎总是不 ...

  2. 蓝牙inquiry流程之Inquiry Complete处理

    inquiry流程一般持续有12s多,当inquiry完成的时候,设备端会上报一个Event: Inquiry Complete 上来,那协议栈是如何把这个事件上传到应用层的呢?本篇文章来分析一下其具 ...

  3. R绘图 第十篇:绘制文本、注释和主题(ggplot2)

    使用ggplot2包绘制时,为了更直观地向用户显示报表的内容和外观,需要使用geom_text()函数添加文本说明,使用annotate()添加注释,并通过theme()来调整非数据的外观. 一,文本 ...

  4. 13、通过Docker-compose快速搭建Wordpress

    一.compose定义 以下定义摘自docker官网:https://docs.docker.com/compose/overview/ Compose is a tool for defining ...

  5. CM005-逆向分析过程(上篇)

    前言 005,都说比较变态,很多人给放过去了,但是我还是决定上了它,既然变态就分两篇,上篇先实际说流程,到底应该怎么上它,下篇会告诉逆向分析的过程和方法 准备 [环境和工具] win7/xp虚拟机环境 ...

  6. 贪心算法HURUST题目

    题目描述: Yogurt factory The cows have purchased a yogurt factory that makes world-famous Yucky Yogurt. ...

  7. 做游戏的小伙伴们注意了,DDoS还可以这样破!

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云发表于云+社区专栏 作者:腾讯DDoS安全专家.腾讯云游戏安全专家haroldchen 摘要:在游戏出海的过程中,DDoS攻 ...

  8. POW的重力之美

    定律一:每一个UTXO都保持其状不变,直到有外力迫使它改变这种状态为止--艾萨克•牛顿,原理2.0 在过去的几年里,关于比特币的工作量证明(PoW)所造成的"巨大的能源浪费"已经被 ...

  9. 2. Python3 基础入门

    Python3 基础入门 编码 在python3中,默认情况下以UTF-8编码.所有字符串都是 unicode 字符串,当然也可以指定不同编码.体验过2.x版本的编码问题,才知道什么叫难受. # -* ...

  10. Linux下C语言编程基础学习记录

    VIM的基本使用  LINUX下C语言编程 用gcc命令编译运行C语言文件 预处理阶段:将*.c文件转化为*.i预处理过的C程序. 编译阶段:将*.i文件编译为汇编代码*.s文件. 汇编阶段:将*.s ...