nodeJS实现简易爬虫

需求:使用nodeJS爬取昵图网某个分类下的图片并存入本地

  • 运用nodeJS自带系统模块http、fs

示例代码:

  1. var http =require('http');
  2. var fs =require('fs');
  3. var curentPage=1; //当前图片页数
  4. var maxcurentPage=5;//最大页数
  5. //获取图片地址
  6. function getData(){
  7. let url = 'http://www.nipic.com/photo/xiandai/jiaotong/index.html?page='+curentPage
  8. http.get(url,(res)=>{
  9. var data = '';
  10. res.on('data',(a)=>{
  11. data+=a.toString();
  12. })
  13. res.on('end',()=>{
  14. let reg = /<img src="(.+?)" data-src="(.*?)" alt="(.*?)" \/>/g
  15. let arr=[];
  16. while (reg.exec(data)){
  17. arr.push(reg.exec(data)[2]);
  18. }
  19. for(i in arr){
  20. (function(i){
  21. setTimeout(()=>{
  22. getImg(arr[i])
  23. },500*i)
  24. })(i)
  25. }
  26. if (curentPage < maxcurentPage){
  27. curentPage++;
  28. arguments.callee();
  29. }
  30. })
  31. })
  32. }
  33. //图片写入img文件夹
  34. function getImg(url){
  35. let u = url.replace(/\/pic\//,'/file/')
  36. .replace(/_4.jpg/,'_2.jpg');
  37. http.get(u,(res)=>{
  38. let name = new Date().getTime();
  39. let stream = fs.createWriteStream('./img/' + name + '.png');
  40. res.pipe(stream);
  41. })
  42. }
  43. getData();

nodeJS实现简易爬虫的更多相关文章

  1. NodeJS概述2-事件插件-简易爬虫

    事件 events 模块 原生事件写法 /* * 1. 事件分类 * DOM0级 事件 - on + eventType * DOM2级 事件 - 事件监听 * 2. 事件构成部分有哪些? dom.o ...

  2. python简易爬虫来实现自动图片下载

    菜鸟新人刚刚入住博客园,先发个之前写的简易爬虫的实现吧,水平有限请轻喷. 估计利用python实现爬虫的程序网上已经有太多了,不过新人用来练手学习python确实是个不错的选择.本人借鉴网上的部分实现 ...

  3. 使用 HttpClient 和 HtmlParser 实现简易爬虫

    这篇文章介绍了 HtmlParser 开源包和 HttpClient 开源包的使用,在此基础上实现了一个简易的网络爬虫 (Crawler),来说明如何使用 HtmlParser 根据需要处理 Inte ...

  4. php+phpquery简易爬虫抓取京东商品分类

    这是一个简单的php加phpquery实现抓取京东商品分类页内容的简易爬虫.phpquery可以非常简单地帮助你抽取想要的html内容,phpquery和jquery非常类似,可以说是几乎一样:如果你 ...

  5. [转]使用 HttpClient 和 HtmlParser 实现简易爬虫

    http://www.ibm.com/developerworks/cn/opensource/os-cn-crawler/ http://blog.csdn.net/dancen/article/d ...

  6. nodejs的简单爬虫

    闲聊       好久没写博客了,前几天小颖在朋友的博客里看到了用nodejs的简单爬虫.所以小颖就自己试着做了个爬博客园数据的demo.嘻嘻......      小颖最近养了条泰日天,自从养了我家 ...

  7. 爬虫系列1:python简易爬虫分析

    决定写一个小的爬虫系列,本文是第一篇,讲爬虫的基本原理和简易示例. 1.单个网页的简易爬虫 以下爬虫的主要功能是爬取百度贴吧中某一页面的所有图片.代码由主要有两个函数:其中getHtml()通过页面u ...

  8. nodejs 快要变成爬虫界的王者

    nodejs 快要变成爬虫界的王者 爬虫这东西是很多数据采集必须要的东西. 但是现在随着网页不断发展,已经出现了出单纯的网页,到 ajax 网页, 再到 spa , 再到 websocket 应用,一 ...

  9. 一次使用NodeJS实现网页爬虫记

    前言 几个月之前,有同事找我要PHP CI框架写的OA系统.他跟我说,他需要学习PHP CI框架,我建议他学习大牛写的国产优秀框架QeePHP. 我上QeePHP官网,发现官方网站打不开了,GOOGL ...

随机推荐

  1. python测试mysql数据库性能(二)

    一,普通写入数据库 二,批量写入数据库 三,普通写入数据库添加事务 config = { 'host': 'localhost', 'port': 3306, 'database': 'test', ...

  2. url的长度问题

    url最长支持多少字符? 在http协议中,其实并没有对url长度作出限制,往往url的最大长度和用户浏览器和Web服务器有关,不一样的浏览器,能接受的最大长度往往是不一样的,当然,不一样的Web服务 ...

  3. angular7post提交的例子

    postDemo() { const params = new HttpParams(); '); '); this._httpClient.post('http://127.0.0.1:12345/ ...

  4. docker入门-基本概念(一)

    Docker是什么 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker的应用场景 Web 应用的自动化打包和发布. 自动化测试和持续集成.发 ...

  5. k8s记录-国内下载k8s组件镜像

    #!/bin/sh ### 版本信息 K8S_VERSION=v1.13.2 ETCD_VERSION=3.2.24 DASHBOARD_VERSION=v1.8.3 FLANNEL_VERSION= ...

  6. Manytasking optimization MATP

    Manytasking Jmetal代码反向解析1_MATP测试函数集 觉得有用的话,欢迎一起讨论相互学习~Follow Me 这是我在写Manytask optimization时的笔记,代码地址可 ...

  7. linux那些事儿

    Linux只是一个操作系统内核而已,而GNU提供了大量的自由软件来丰富在其之上的各种应用程序.我们常说的linux实际是GNU/Linux,GNU是一个自由的操作系统.绝大多数基于Linux内核的操作 ...

  8. Winograd Convolution 推导 - 从1D到2D

    Winograd Convolution 推导 - 从1D到2D 姚伟峰 http://www.cnblogs.com/Matrix_Yao/ Winograd Convolution 推导 - 从1 ...

  9. 关于千里马招标网知道创宇反爬虫521状态码的解决方案(python代码模拟js生成cookie _clearence值)

    一.问题发现 近期我在做代理池的时候,发现了一种以前没有见过的反爬虫机制.当我用常规的requests.get(url)方法对目标网页进行爬取时,其返回的状态码(status_code)为521,这是 ...

  10. lvm的一些特殊命令

    pvscan --cache # 将lvm信息同步到其他节点 ......未完待续