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}下载成功`);
})
})
})
}
nodejs制作爬虫程序的更多相关文章
- NodeJS制作爬虫全过程
这篇文章主要介绍了NodeJS制作爬虫的全过程,包括项目建立,目标网站分析.使用superagent获取源数据.使用cheerio解析.使用eventproxy来并发抓取每个主题的内容等方面,有需要的 ...
- 基于node.js制作爬虫教程
前言:最近想学习node.js,突然在网上看到基于node的爬虫制作教程,所以简单学习了一下,把这篇文章分享给同样初学node.js的朋友. 目标:爬取 http://tweixin.yueyishu ...
- 爬虫浅谈一:一个简单c#爬虫程序
这篇文章只是简单展示一个基于HTTP请求如何抓取数据的文章,如觉得简单的朋友,后续我们再慢慢深入研究探讨. 图1: 如图1,我们工作过程中,无论平台网站还是企业官网,总少不了新闻展示.如某天产品经理跟 ...
- Nodejs实现爬虫抓取数据
开始之前请先确保自己安装了Node.js环境,还没有安装的的童鞋请自行百度安装教程...... 1.在项目文件夹安装两个必须的依赖包 npm install superagent --save-dev ...
- c# 获取网页的爬虫程序
转载于:https://www.cnblogs.com/wzk153/p/9145684.html HtmlAgilityPack相关详解: https://www.cnblogs.com/asxin ...
- nodejs豆瓣爬虫
从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...
- 使用好压(HaoZip)软件打包EverEdit制作安装程序
最近使用EverEdit,使用原始的安装程序安装后,需要重新安装插件,对配置文件进行了修改,定制了工具栏.将安装后的程序目录进行打包,制作新的安装包,便于携带. 以下为打包制作过程: 打包原料:Eve ...
- 如何制作exe程序可执行文件
很多软件的运行都需要搭建环境,只有exe文件可以在不安装软件和数据库的环境下运行,那么怎么制作exe程序可执行文件呢,下面天使教你如何制作. 工具/原料 Microsoft Visual St ...
- python 校招信息爬虫程序
发现一个爬虫程序,正在学习中: https://github.com/lizherui/spider_python
随机推荐
- php 23种设计模型 - 享元模式
享元模式 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能.这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式. ...
- 电子检索实体书「GitHub 热点速览 v.22.12」
不知道有没有小伙伴遇到实体书快速定位指定内容的问题,凭借着记忆里很难快速翻阅到正确的页数,但 paperless-ngx 也许能帮上你的忙,它除了能将你的实体书籍电子化变成文件库里的一员之外,还能帮你 ...
- 恢复mysql管理员密码
1.向mysqld server 发送kill命令关掉mysqld server(不是 kill -9),存放进程ID的文件通常在MYSQL的数据库所在的目录/var/lib/mysql中.# kil ...
- pyhon反射
一:反射 1.python面向对象中的反射: 通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 2.四个内置方法 hasattr 检测是否含有某属性 getatt ...
- Cobalt Strike的使用
0x00 Cobalt Strike简介 Cobalt Strike 一款以metasploit为基础的GUI的框架式渗透测试工具,集成了端口转发.服务扫描,自动化溢出,多模式端口监听, ...
- Shell:常见错误总结(一)
Blog:博客园 个人 译自BashPitfalls 本文总结了编写Shell脚本中的常见错误. for f in $(ls *.mp3) 最常犯的错之一就是编写这样的循环: for f in $(l ...
- 什么是 Swagger?你用 Spring Boot 实现了它吗?
Swagger 广泛用于可视化 API,使用 Swagger UI 为前端开发人员提供在线沙箱.Swagger 是用于生成 RESTful Web 服务的可视化表示的工具,规范和完整框架实现.它使文档 ...
- 在Spring AOP 中,关注点和横切关注的区别是什么?
关注点是应用中一个模块的行为,一个关注点可能会被定义成一个我们想实现的一个功能. 横切关注点是一个关注点,此关注点是整个应用都会使用的功能,并影响整个应用,比如日志,安全和数据传输,几乎应用的每个模块 ...
- java-注解相关
注解 概念:说明程序的,给计算机看 注释:用文字描述程序 先了解一些怎么正常javadoc文档 1:给类或者方法添加doc注释 2:通过命令javadoc 执行 类.java文件 新建的类: /** ...
- Linux分区问题
一.基本分区的作用及其大小 /boot分区: 存放引导文件和Linux内核文件等. 引导文件:判断启动哪一个操作系统或启动哪个内核. 内核:管理硬件和软件资源,程序与硬件之间的桥梁. 分区大小:100 ...