node爬虫入门
2023-09-14 09:00:17 时间
爬虫其实就是模仿浏览器访问页面,然后把页面保存起来备用。
爬虫的方法,直接上代码:
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。。。。。
相关文章
- 双11当晚写的天猫爬虫,爬虫神器 scrapy 大法好!!!
- Python获取时间戳_python爬虫时间戳
- Python 万能代码模版:爬虫代码篇「建议收藏」
- Node.js爬虫之爬取1905电影网
- 初步入门爬虫
- python 分布式爬虫
- python评分卡代码_python爬虫书籍豆瓣评分
- 爬虫练习题(一)
- Python互联网大数据爬虫的武汉市二手房价格数据采集分析:Linear Regression模型、XGBoost模型和LightGBM模型
- 使用Node.js连接MySQL数据库(node-mysql)
- PHP判断是不是爬虫的方法详解编程语言
- Go语言网络爬虫中的基本数据结构
- Go语言网络爬虫内部基础接口
- Linux上部署Node实现更多功能(linux安装node)
- 版本Linux下查看Node版本号的方法(linux查看node)
- 如何使用Node.js连接Oracle数据库(node连接oracle)
- 隧道转发爬虫代理的使用
- 运维学python之爬虫实战篇(一)爬取百度贴吧
- Node.js连接MSSQL数据库的操作指南(node 链接mssql)
- Node MSSQL 报错处理 解决技巧分享(node mssql报错)
- 轻松安装Oracle数据库Node环境下操作指南(node安装oracle)
- 原来爬虫是用Redis才行(爬虫为什么用redis)
- 利用Redis实现高效的Node限流(redis限流node)
- 使用Python编写简单网络爬虫抓取视频下载资源
- 我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码以及事件循环