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
随机推荐
- laravel中{{}}和{!! !!}的区别详解
{{}}支持转义 一段html代码只是被当成普通的字符串输出 {!! !!} 不支持转义 一段html代码可以被正常的解析 public function html(){ $address=" ...
- 专业5 laravel框架添加,删除,恢复,分页,搜索接口
//////////////////////资源路由 //商品资源路由恢复Route::get('/restore/{id}','goodController@restore');//商品资源路由添加 ...
- Windows下搭建REDIS集群
Redis集群: 如果部署到多台电脑,就跟普通的集群一样:因为Redis是单线程处理的,多核CPU也只能使用一个核, 所以部署在同一台电脑上,通过运行多个Redis实例组成集群,然后能提高CPU的利用 ...
- ArcMap操作随记(2)
1.空间校正 变换-仿射 仅发生偏移 橡皮页变化 形状改变 变换-投影 旋转,改变角度 变换-相似 改变大小.形状不变 2.计算行列号 Int(([POINT_Y]-1273.143242)/30)+ ...
- Net中事件的高级用法之三
1.事件的高级应用 使用事件可以解除代码耦合 2.事件高级应用实例 using System; using System.Collections.Generic; using System.Linq; ...
- 前端经典面试题vue面试题
1.什么是MVVM? MVVM是一种设计思想. Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑: View 代表UI 组件,它负责将数据模型转化成UI 展现出来,View ...
- 创世区块配置文件genesis.json的格式解读
创世区块配置文件genesis.json的格式解读 中文网站上关于genesis 的解析大多数都来自于这个Gist:Ethereum private network configuration gui ...
- futter环境安装
镜像下载.域名解析.时间同步请点击 阿里巴巴开源镜像站 Flutter是谷歌开发的一款开源.免费的基于Dart语言的UI框架,可以快速在IOS和Android上构建高质量的原生应用.它的最大的特点是跨 ...
- centos根目录扩容
一.扫描磁盘 若已在虚拟机增加了磁盘且没看到磁盘 运行下面的命令来查找系统中所有的主机总线编号: # ls /sys/class/scsi_host 得到主机总线编号后,运行以下命令来发现新的磁盘: ...
- 12.16 JAVA swing
------------恢复内容开始------------ 12.16JAVA swing 1.框架 JFrame>JPanel>组件JButton JTestfilled JTable ...