node爬虫入门
爬虫其实就是模仿浏览器访问页面,然后把页面保存起来备用。
爬虫的方法,直接上代码:
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爬虫入门的更多相关文章
- 爬虫入门二 beautifulsoup
title: 爬虫入门二 beautifulsoup date: 2020-03-12 14:43:00 categories: python tags: crawler 使用beautifulsou ...
- Python简单爬虫入门三
我们继续研究BeautifulSoup分类打印输出 Python简单爬虫入门一 Python简单爬虫入门二 前两部主要讲述我们如何用BeautifulSoup怎去抓取网页信息以及获取相应的图片标题等信 ...
- Python爬虫入门一之综述
大家好哈,最近博主在学习Python,学习期间也遇到一些问题,获得了一些经验,在此将自己的学习系统地整理下来,如果大家有兴趣学习爬虫的话,可以将这些文章作为参考,也欢迎大家一共分享学习经验. Pyth ...
- Python简单爬虫入门二
接着上一次爬虫我们继续研究BeautifulSoup Python简单爬虫入门一 上一次我们爬虫我们已经成功的爬下了网页的源代码,那么这一次我们将继续来写怎么抓去具体想要的元素 首先回顾以下我们Bea ...
- GJM : Python简单爬虫入门(二) [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- 继续node爬虫 — 百行代码自制自动AC机器人日解千题攻占HDOJ
前言 不说话,先猛戳 Ranklist 看我排名. 这是用 node 自动刷题大概半天的 "战绩",本文就来为大家简单讲解下如何用 node 做一个 "自动AC机&quo ...
- Node.js 入门手册:那些最流行的 Web 开发框架
这篇文章与大家分享最流行的 Node.js Web 开发框架.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编 ...
- 【特别推荐】Node.js 入门教程和学习资源汇总
这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...
- 让我们一起学习《Node.js入门》一书吧!
Node.js入门 读完本书之后,你将完成一个完整的web应用,该应用允许用户浏览页面以及上传文件. 里面对一些知识的讲解,让你略窥Node.js的门径.最好一段代码一段代码的写下来,我的习惯是手里拿 ...
随机推荐
- kali黑客渗透测试基础环境准备
1.apt-get install python-nmap 2.apt-get install python-setuptools 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 ...
- C#对战小游戏,持续更新(里面暂无内容,标记插眼)
做的乱七八糟的 很明显的一点,对集合.数组.类的理解和运用 很差.很差.很差 今儿不做了,马德,头都肿大了 休息一下,捋一捋
- Docker部署Zookeeper容器
获取zookeeper镜像 docker pull zookeeper 创建zookeeper容器 docker run --name="zookeeper" -p 2181:21 ...
- Tortoisegit生成SSH密钥一次性输入密码
一.找到Tortoisegit 的安装目录,进入bin目录下,找到puttygen.exe并打开,点击Generate按钮,会看到上面出现绿色滚动条,此时要不停移动鼠标,进度会比较快,完成后,就会看到 ...
- 再探Redux Middleware
前言 在初步了解Redux中间件演变过程之后,继续研究Redux如何将中间件结合.上次将中间件与redux硬结合在一起确实有些难看,现在就一起看看Redux如何加持中间件. 中间件执行过程 希望借助图 ...
- 重磅发布丨乐维监控:全面兼容云平台,助力企业DevOps转型升级!
2019年伊始,我们迎来了乐维监控的又一重大功能更新——云平台监控,这将有效帮助企业将云上.云下数据聚合,方便统一化的监控管理与维护!未来,乐维监控每一次的产品功能及版本更新,我们都将第一时间于此发布 ...
- 在Linux系统中安装caffe
学习深度学习已经很久了,但一直没有自己动手安装过caffe,因为工作需要,需要在linux系统中安装caffe,因此,在这里对安装过程进行记录. caffe配置起来比tensorflow更麻烦一些,我 ...
- NumCPU()在slice中的使用
package main import ( "fmt" "runtime" ) var slice []int func main() { array := m ...
- Linux内核实验作业四
实验作业:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 20135313吴子怡.北京电子科技学院 [第一部分]使用库函数API来获取用户标识号.库函数为getuid() 代码如下: ...
- bing背单词交互流程 - Chongyang Bai
昨天和travis,钟秋开会确认了bing背单词的手机界面交互流程.我在这里简单描述一下,设计页面暂时不能贴出来,期待大家的宝贵意见 b( ̄▽ ̄)d. 单词本浏览界面:单词本被分为两类,用户单词本和单 ...