nodeJS实现简易爬虫
nodeJS实现简易爬虫
需求:使用nodeJS爬取昵图网某个分类下的图片并存入本地
- 运用nodeJS自带系统模块http、fs
示例代码:
var http =require('http');
var fs =require('fs');
var curentPage=1; //当前图片页数
var maxcurentPage=5;//最大页数
//获取图片地址
function getData(){
let url = 'http://www.nipic.com/photo/xiandai/jiaotong/index.html?page='+curentPage
http.get(url,(res)=>{
var data = '';
res.on('data',(a)=>{
data+=a.toString();
})
res.on('end',()=>{
let reg = /<img src="(.+?)" data-src="(.*?)" alt="(.*?)" \/>/g
let arr=[];
while (reg.exec(data)){
arr.push(reg.exec(data)[2]);
}
for(i in arr){
(function(i){
setTimeout(()=>{
getImg(arr[i])
},500*i)
})(i)
}
if (curentPage < maxcurentPage){
curentPage++;
arguments.callee();
}
})
})
}
//图片写入img文件夹
function getImg(url){
let u = url.replace(/\/pic\//,'/file/')
.replace(/_4.jpg/,'_2.jpg');
http.get(u,(res)=>{
let name = new Date().getTime();
let stream = fs.createWriteStream('./img/' + name + '.png');
res.pipe(stream);
})
}
getData();
nodeJS实现简易爬虫的更多相关文章
- NodeJS概述2-事件插件-简易爬虫
事件 events 模块 原生事件写法 /* * 1. 事件分类 * DOM0级 事件 - on + eventType * DOM2级 事件 - 事件监听 * 2. 事件构成部分有哪些? dom.o ...
- python简易爬虫来实现自动图片下载
菜鸟新人刚刚入住博客园,先发个之前写的简易爬虫的实现吧,水平有限请轻喷. 估计利用python实现爬虫的程序网上已经有太多了,不过新人用来练手学习python确实是个不错的选择.本人借鉴网上的部分实现 ...
- 使用 HttpClient 和 HtmlParser 实现简易爬虫
这篇文章介绍了 HtmlParser 开源包和 HttpClient 开源包的使用,在此基础上实现了一个简易的网络爬虫 (Crawler),来说明如何使用 HtmlParser 根据需要处理 Inte ...
- php+phpquery简易爬虫抓取京东商品分类
这是一个简单的php加phpquery实现抓取京东商品分类页内容的简易爬虫.phpquery可以非常简单地帮助你抽取想要的html内容,phpquery和jquery非常类似,可以说是几乎一样:如果你 ...
- [转]使用 HttpClient 和 HtmlParser 实现简易爬虫
http://www.ibm.com/developerworks/cn/opensource/os-cn-crawler/ http://blog.csdn.net/dancen/article/d ...
- nodejs的简单爬虫
闲聊 好久没写博客了,前几天小颖在朋友的博客里看到了用nodejs的简单爬虫.所以小颖就自己试着做了个爬博客园数据的demo.嘻嘻...... 小颖最近养了条泰日天,自从养了我家 ...
- 爬虫系列1:python简易爬虫分析
决定写一个小的爬虫系列,本文是第一篇,讲爬虫的基本原理和简易示例. 1.单个网页的简易爬虫 以下爬虫的主要功能是爬取百度贴吧中某一页面的所有图片.代码由主要有两个函数:其中getHtml()通过页面u ...
- nodejs 快要变成爬虫界的王者
nodejs 快要变成爬虫界的王者 爬虫这东西是很多数据采集必须要的东西. 但是现在随着网页不断发展,已经出现了出单纯的网页,到 ajax 网页, 再到 spa , 再到 websocket 应用,一 ...
- 一次使用NodeJS实现网页爬虫记
前言 几个月之前,有同事找我要PHP CI框架写的OA系统.他跟我说,他需要学习PHP CI框架,我建议他学习大牛写的国产优秀框架QeePHP. 我上QeePHP官网,发现官方网站打不开了,GOOGL ...
随机推荐
- python测试mysql数据库性能(二)
一,普通写入数据库 二,批量写入数据库 三,普通写入数据库添加事务 config = { 'host': 'localhost', 'port': 3306, 'database': 'test', ...
- url的长度问题
url最长支持多少字符? 在http协议中,其实并没有对url长度作出限制,往往url的最大长度和用户浏览器和Web服务器有关,不一样的浏览器,能接受的最大长度往往是不一样的,当然,不一样的Web服务 ...
- angular7post提交的例子
postDemo() { const params = new HttpParams(); '); '); this._httpClient.post('http://127.0.0.1:12345/ ...
- docker入门-基本概念(一)
Docker是什么 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker的应用场景 Web 应用的自动化打包和发布. 自动化测试和持续集成.发 ...
- k8s记录-国内下载k8s组件镜像
#!/bin/sh ### 版本信息 K8S_VERSION=v1.13.2 ETCD_VERSION=3.2.24 DASHBOARD_VERSION=v1.8.3 FLANNEL_VERSION= ...
- Manytasking optimization MATP
Manytasking Jmetal代码反向解析1_MATP测试函数集 觉得有用的话,欢迎一起讨论相互学习~Follow Me 这是我在写Manytask optimization时的笔记,代码地址可 ...
- linux那些事儿
Linux只是一个操作系统内核而已,而GNU提供了大量的自由软件来丰富在其之上的各种应用程序.我们常说的linux实际是GNU/Linux,GNU是一个自由的操作系统.绝大多数基于Linux内核的操作 ...
- Winograd Convolution 推导 - 从1D到2D
Winograd Convolution 推导 - 从1D到2D 姚伟峰 http://www.cnblogs.com/Matrix_Yao/ Winograd Convolution 推导 - 从1 ...
- 关于千里马招标网知道创宇反爬虫521状态码的解决方案(python代码模拟js生成cookie _clearence值)
一.问题发现 近期我在做代理池的时候,发现了一种以前没有见过的反爬虫机制.当我用常规的requests.get(url)方法对目标网页进行爬取时,其返回的状态码(status_code)为521,这是 ...
- lvm的一些特殊命令
pvscan --cache # 将lvm信息同步到其他节点 ......未完待续