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
随机推荐
- 简单实现一个快速传输电子书到kindle的小项目
前言 最近翻出来好久没有看的kindle,准备继续我的阅读之路.当然,也是因为发现了一个非常好的获取电子书资源的网站,又燃起了我的阅读兴趣. 然而,往kindle里传输电子书的方式一共有四种: 直接在 ...
- Excel 使用 公式
1. 查询单元数据在另一列中是否存在 =VLOOKUP(E2,F:F,1,FALSE) 2.判断一列数据是否重复 =IF(COUNTIF(A:A,A2)>1,"重复",&qu ...
- Net中事件的用法之二
1.委托与事件的区别 事件对权限做了控制 1.委托可以直接调用 事件不可以直接调用 2.委托允许外面直接赋值 事件不允许外面直接赋值 2.事件与委托的实例比较 using System; using ...
- PHP命令执行集锦
前言 代码审计总要遇到命令执行或者说RCE,打CTF的过程中难免不会碰见,毕竟PHP是世界上最好的语言,总结一下 命令执行函数 E.g.1 <?php error_reporting(0); s ...
- ASP.NET Core 6 Minimal API的模拟实现
Minimal API仅仅是在基于IHost/IHostBuilder的服务承载系统上作了小小的封装而已,它利用WebApplication和WebApplicationBuilder这两个类型提供了 ...
- Serialzers 序列化组件
Serialzers 序列化组件 前言 当做前后端分离的项目时,JSON是一个轻量级的数据交互格式.所有我们给前端数据的时候都要转成json格式,那就需要对我们从数据库拿到数据进行序列化 Django ...
- phpcms 2008 变量覆盖漏洞
一. 启动环境 1.双击运行桌面phpstudy.exe软件 2.点击启动按钮,启动服务器环境 二.代码审计 1.双击启动桌面Seay源代码审计系统软件 3.点击新建项目按钮,弹出对画框中选择(C:\ ...
- DC-2
环境搭建 下载地址: https://download.vulnhub.com/dc/DC-2.zip.torrent 从描述中得知有5个flag. 下载好后导入虚拟机 修改网络配置为NAT 探测靶机 ...
- Flutter入门教程(一)Flutter简介
这是Flutter系列第一篇文章,后续会持续更新Flutter相关知识,本篇就主要对于Flutter技术做一个简单的入门介绍 一.Flutter简介 Flutter是谷歌的移动UI框架,可以快速在iO ...
- vue Cannot read property ‘tapPromise‘ of undefined
https://blog.csdn.net/qq379682421/article/details/111574290 https://github.com/SimenB/add-asset-html ...