在nodejs中,可以通过不断对服务器进行请求,以及本身的fs  =》filesystem 模块和clientRequest模块对网站的资源进行怕取,目前只做到了对图片的趴取!视频文件格式各异,有的视频网站上视频可能是加密过的。无法爬取来;

'use strict';
const http = require('http');
const fs = require('fs');
const path = require('path');
// 创建一个clientRequest对象
// const cr = http.get('http://www.baidu.com');
// cr.on('response', (res) => {
// console.log('服务端接受到我的请求了');
// console.log(res);
// })
// 需要将所有的img标签对应的src属性值提取出来
//再次发起请求,将突破保存在本地的磁盘上面;
//给定一个url,将其下载到本地磁盘;封装一个函数
//不断调用这个函数;使用正则表达式,提取所需要的字符串;
// const cr = http.get('http://www.dbmeinv.com/', (res) => {
// let str;
// // 注册data流事件;
// res.on('data', (chunk) => {
// str += chunk;
// });
// //注册end事件;
// res.on('end', () => {
// console.log(str);
// })
// })
// const cr = http.get('');
// cr.on('response', (res) => {
// console.log('服务端接受到我的请求了');
// console.log(res);
// let data = '';
// res.on('data',(chunk)=>{
// data += chunk;
// });
// res.on('end',()=>{
// console.log(data);
// })
// }); for(let i =1;i<17;i++) {
// let num = Math.random()*12000+
let url ='https://user.qzone.qq.com/812551954';
// console.log(url);
down(url);
}
function down(url){
http.get(url,(res)=>{
let data = '';
res.on('data',(chunk)=>{
data += chunk;
});
res.on('end',()=>{
//文件
let regexp = /src="(http:\/\/[0-9a-zA-Z.\/]+jpg)"/g;
let arr = [];
let temp;
while((temp=regexp.exec(data))!=null){
arr.push(temp[1]);
}
// console.log(arr);
arr.forEach((item)=>{
download(item);
})
})
});
} //用正则表达式去匹配对应的图片资源; // 首先编写函数下载单张图片
// 目标地址
// 获取目标页面的所有内容; 包括html等;
function download(url) {
// let url = "http://ww2.sinaimg.cn/large/0060lm7Tgy1fe69ac1v44j30dw0k3gof.jpg"
//创建一个clientRequest对象,向服务器发送请求;
http.get(url, (res) => {
res.setEncoding('binary');
let data = '';
//数据开始传输事件;
res.on('data', (chunk) => {
data += chunk;
});
//数据传输结束的时候,将其接受
res.on('end', () => {
let pic = path.basename(url);
//此时图片的内容已经在data中了;
//图片存储的路径
let file = path.join('pic', pic);
fs.writeFile(file, data, 'binary', (err) => {
if (err) throw err;
console.log(`图片${pic}下载成功`);
})
})
})
}

nodejs制作爬虫程序的更多相关文章

  1. NodeJS制作爬虫全过程

    这篇文章主要介绍了NodeJS制作爬虫的全过程,包括项目建立,目标网站分析.使用superagent获取源数据.使用cheerio解析.使用eventproxy来并发抓取每个主题的内容等方面,有需要的 ...

  2. 基于node.js制作爬虫教程

    前言:最近想学习node.js,突然在网上看到基于node的爬虫制作教程,所以简单学习了一下,把这篇文章分享给同样初学node.js的朋友. 目标:爬取 http://tweixin.yueyishu ...

  3. 爬虫浅谈一:一个简单c#爬虫程序

    这篇文章只是简单展示一个基于HTTP请求如何抓取数据的文章,如觉得简单的朋友,后续我们再慢慢深入研究探讨. 图1: 如图1,我们工作过程中,无论平台网站还是企业官网,总少不了新闻展示.如某天产品经理跟 ...

  4. Nodejs实现爬虫抓取数据

    开始之前请先确保自己安装了Node.js环境,还没有安装的的童鞋请自行百度安装教程...... 1.在项目文件夹安装两个必须的依赖包 npm install superagent --save-dev ...

  5. c# 获取网页的爬虫程序

    转载于:https://www.cnblogs.com/wzk153/p/9145684.html HtmlAgilityPack相关详解: https://www.cnblogs.com/asxin ...

  6. nodejs豆瓣爬虫

    从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...

  7. 使用好压(HaoZip)软件打包EverEdit制作安装程序

    最近使用EverEdit,使用原始的安装程序安装后,需要重新安装插件,对配置文件进行了修改,定制了工具栏.将安装后的程序目录进行打包,制作新的安装包,便于携带. 以下为打包制作过程: 打包原料:Eve ...

  8. 如何制作exe程序可执行文件

    很多软件的运行都需要搭建环境,只有exe文件可以在不安装软件和数据库的环境下运行,那么怎么制作exe程序可执行文件呢,下面天使教你如何制作.   工具/原料   Microsoft Visual St ...

  9. python 校招信息爬虫程序

    发现一个爬虫程序,正在学习中: https://github.com/lizherui/spider_python

随机推荐

  1. selenium&火狐驱动安装及兼容性处理

    1.selenium安装 安装:pip install selenium==3.7.0 卸载: pip uninstall selenium 查看版本号:pip show selenium   2.火 ...

  2. Intellij IDEA远程debug线上项目记录

    远程调试,特别是当你在本地开发的时候,你需要调试服务器上的程序时,远程调试就显得非常有用. JAVA 支持调试功能,本身提供了一个简单的调试工具JDB,支持设置断点及线程级的调试同时,不同的JVM通过 ...

  3. 移动IP通信过程

    看了点资料,沿着自己的思路来整理一下计算机网络部分移动IP通信遇到的问题以及是怎样解决的.如有错误,欢迎纠正! 遇到问题,然后解决问题. 沿着这样一个思路我们可以看看移动IP通信和传统的网络通信有什么 ...

  4. (web)Bugs_Bunny_CTF_writeup 部分简单web

    Nothing here QnVnc19CdW5ueXs1MjljNDI5YWJkZTIxNzFkMGEyNTU4NDQ3MmFmODIxN30K Bugs_Bunny{529c429abde2171 ...

  5. 如何用系统命令sc修改系统服务

    系统服务是系统的一项重要组成部分,sc命令在特定权限下,可以实现对指定服务的启动项.配置文件及状态进行修改,位置在c:\windows\system32\目录下面,下面就和大家分享一下如何用系统命令s ...

  6. 实习项目1-串口IP升级调试

    设计目标:设计一个串口IP,要求1:输入时钟频率任意,如0-400M时钟频率:要求2:波特率超过常见的115200,要求达到4M. 设计核心思路:波特率计算公式,divp10x = (10 * fsy ...

  7. vs2017连接sqlsever数据库

    vs2017连接mysql数据库操作步骤 怎样使用vs2017连接数据库 [C++]VS2015/VS2017连接Mysql数据库教程

  8. Sting -- byte[]互转

    1.String -->byte[] String str = "中国"; byte[] bys = str.getBytes(); Arrays.toString(bys) ...

  9. 为什么操作 DOM 慢?

    DOM本身是一个js对象, 操作这个对象本身不慢, 但是操作后触发了浏览器的行为, 如repaint和reflow等浏览器行为, 使其变慢

  10. Struts2的功能扩展点有哪些?

    l Interceptor及其相关子类 l TypeConverter及其相关子类 l Validator及其相关子类 l Result及其相关子类 l ObjectFactory及其相关子类