nodejs制作爬虫程序

在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}下载成功`);
            })
        })
    })
}
时间: 2024-12-21 10:56:43

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

NodeJS制作爬虫全过程

这篇文章主要介绍了NodeJS制作爬虫的全过程,包括项目建立,目标网站分析.使用superagent获取源数据.使用cheerio解析.使用eventproxy来并发抓取每个主题的内容等方面,有需要的小伙伴参考下吧. 今天来学习alsotang的爬虫教程,跟着把CNode简单地爬一遍. 建立项目craelr-demo我们首先建立一个Express项目,然后将app.js的文件内容全部删除,因为我们暂时不需要在Web端展示内容.当然我们也可以在空文件夹下直接 npm install express

用Nodejs做爬虫

欢迎访文我的博客YangChen's Blog 引言 提起爬虫,最容易想到的就是python,因为python给人的感觉就是啥都能干,但是之前用python做爬虫的过程还是很不爽的,主要问题来自这么几个方面:第一个是对爬来的网页dom操作上,第二个就是编码的处理,第三就是多线程,所以用python做爬虫其实并不是很爽,有没有更爽的方式呢?当然有那就是node.js! Nodejs做爬虫的优劣 首先说一下node做爬虫的优势 第一个就是他的驱动语言是JavaScript.JavaScript在no

Nodejs实现爬虫抓取数据

开始之前请先确保自己安装了Node.js环境,还没有安装的的童鞋请自行百度安装教程...... 1.在项目文件夹安装两个必须的依赖包 npm install superagent --save-dev superagent 是一个轻量的,渐进式的ajax api,可读性好,学习曲线低,内部依赖nodejs原生的请求api,适用于nodejs环境下 npm install cheerio --save-dev cheerio是nodejs的抓取页面模块,为服务器特别定制的,快速.灵活.实施的jQu

浅谈工作中设计、制作和程序之间的配合

以下是我在平常工作中所遇到的,文笔不是很好,求大神轻喷.在项目进行的过程中,主要分为设计--制作--程序这三个步骤,首先先从设计页面开始,包括页面上面的诸多效果在内.而制作负责将设计稿的PSD文件变成页面上的代码,还原度要求99%以上.程序方面主要是配合在项目进行中的功能开发,如果当前项目没有功能开发的话,主要配合制作进行JS或者Jquery调试.首先说一下设计方面,众所周知,网站首页是一个网站的重中之重,所以首页的设计会比后面的子页面要好看一些,当然,效果也会多一些,例如,图片的滚动,H5的滑

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

最近使用EverEdit,使用原始的安装程序安装后,需要重新安装插件,对配置文件进行了修改,定制了工具栏.将安装后的程序目录进行打包,制作新的安装包,便于携带. 以下为打包制作过程: 打包原料:EverEdit定制版: 打包工具:国产压缩软件 HaoZip 好压: 打包过程: 1.安装HaoZip好压软件,打开后,选择需要制作为安装包的文件夹,这里选择“EverEdit”文件夹,然后点击“自解压”. 2.在选项框中,模块选项卡,选择“安装向导模块”,注意自解压文件路径. 3.文本选项卡中,输入自

制作Net程序的帮助文档--总结

一.工具的准备 目前,一般采用Sandcastle Help File Builder工具来制作.Net程序帮助文档,该工具主要是利用Xml文档里的信息以及DLL文件来生成完整的帮助文档.在Visual Studio中,使用三个/的注释内容才会被写入XML文档里,而两个/的注释是不会被写入的. 建议了解一下:XML注释标签讲解   1.GhostDoc--VS代码注释插件 VS本身提供了自动生成XML注释的快键方式,比如在成员函数上面敲入///,VS会自动一种注释框架,但是这种注释里是不包含关于

用Java写的爬虫程序

这是一个web查找的根本程序,从命令行输入查找条件(开端的URL.处置url的最大数.要查找的字符串), 它就会逐一对Internet上的URL进行实时查找,查找并输出匹配查找条件的页面. 这个程序的原型来自<java编程艺术>, 为了非常好的剖析,站长去掉了其间的GUI有些,并稍作修改以适用jdk1.5.以这个程序为基础,可以写出在互联网上查找 比如图像.邮件.页面下载之类的"爬虫". 先请看程序运转的进程: D:\java>javac  SearchCrawler

记录一个在制作Swing程序的小怪事

在制作一个Swing程序时,出现了奇怪的事情,程序在Eclipse里执行正常,但打包后再执行那些动态执行的控件就消失不见了.截图如下: 在Eclipse里正常执行的画面: 打包执行后出现的画面: 可以发现,那些动态创建的CheckBox都消失了. 起初也在网上找什么解决方案,什么updateUI(),repaint(),invalidate()之类的,乱试乱碰,结果当然是无效了. 增加log查看,发现动态创建时需要读取的文件没找到,原来是一个配置文件没有拷贝到jar所在的目录中! 有时候,发现心

使用PHP创建基本的爬虫程序【转】

Web Crawler, 也时也称scrapers,即网络爬虫,用于自动搜索internet并从中提取 想要的内容.互联网的发展离不开它们.爬虫是搜索引擎的核心,通过智能算法发现符合 你输入的关键字的网页. Google网络爬虫会进入你的域名,然后扫描你网站的所有网页,从中析取网页标题,描述, 关键字和链接 - 然后把这些的评价返回给Google HQ,把内容存放至海量的数据库中. 今天,我很高兴告诉你怎么做自己的爬虫 -- 它并不对整个互联网进行搜索,只是对指定的 一个网址获取所有链接和信息[