【Nodejs】使用http.request批量下载MP3,发现网络文件大于1000K时下载文件为0K
这又一次让我对http.request产生质疑
//======================================================
// 喜爱123四年级上英语MP3下载爬虫1.00
// 2018年5月10日
//======================================================
var http=require("http"); // http模块
var https=require("https"); // https模块
var zlib = require('zlib'); // 用于解析gzip网页
var fs=require('fs'); // 文件处理模块
var iconv = require('iconv-lite'); // 用于转码。
var cheerio = require("cheerio"); // 用于从HTML中以类似jquery方式查找目标
//--------------------------------------
// 下载单个mp3
//--------------------------------------
function downloadMp3(url){
console.log("mp3:"+url+"下载开始");
// 得到hostname,path和port
var currUrl=url.replace("http://","");
var pos=currUrl.indexOf("/");
var hostname=currUrl.slice(0,pos);
var path=currUrl.slice(pos);
// 有端口加端口,没有端口默认80
var port=80;
if(hostname.indexOf(":")!=-1){
var arr=hostname.split(":");
hostname=arr[0];
port=arr[1];
}
var name=url.slice(url.lastIndexOf("/"));
// 初始化options
options={
hostname:hostname,
port:port,
path:path,
method:'GET',
/* headers:{
'Referer':'https://www.nvshens.com',
},*/ // 有需要再打开
};
req=http.request(options,function(resp){
var imgData = "";
resp.setEncoding("binary");
resp.on('data',function(chunk){
imgData+=chunk;
});
resp.on('end',function(){
// 创建文件
var fileName="./"+name;
fs.writeFile(fileName, imgData, "binary", function(err){
if(err){
console.log("[downloadPic]文件 "+fileName+" 下载失败.");
console.log(err);
}else{
console.log("文件"+fileName+"下载成功");
}
});
});
});
// 超时处理
req.setTimeout(7500,function(){
req.abort();
});
// 出错处理
req.on('error',function(err){
if(err){
console.log('[downloadMp3]文件 '+url+" 下载失败,"+'因为'+err);
}
});
// 请求结束
req.end();
}
//-------------------------------
// 入口函数
//-------------------------------
function main(){
var profix='http://ting.xiai123.com/mp3/kewen/wysyy4s/Module0';
var appendixs=['Unit1','Unit2','Words'];
for(var i=1;i<10;i++){
for(var j=0;j<appendixs.length;j++){
var url=profix+i+'_'+appendixs[j]+".mp3";
downloadMp3(url);
}
}
//downloadMp3('http://ting.xiai123.com/mp3/kewen/wysyy4s/Module01_Unit2.mp3');
}
// 开始
main();
2018年5月10日13点44分
【Nodejs】使用http.request批量下载MP3,发现网络文件大于1000K时下载文件为0K的更多相关文章
- 【Azure 应用服务】PHP应用部署在App Service for Linux环境中,上传文件大于1MB时,遇见了413 Request Entity Too Large 错误的解决方法
问题描述 在PHP项目部署在App Service后,上传文件如果大于1MB就会遇见 413 Request Entity Too Large 的问题. 问题解决 目前这个问题,首先需要分析应用所在的 ...
- 【Nodejs】使用request批量下载MP3,文件数量内容都没问题
看来request远强于http.request是毋庸置疑的了. 代码如下: //====================================================== // 喜 ...
- C# 应用 - 使用 WepApp 处理文件上传、下载请求
1. 代码 /// <summary> /// 文件上传下载控制器 /// </summary> public class FileController : ApiContro ...
- 抓取分析网页批量下载评书(3)之批量下载mp3
本系列目录: <1.搜索有声小说> <2.分析详细页地址> <3.批量下载mp3> 本篇是大结局,看过前两篇的放心吧,不会有 ...
- 文件上传和下载(可批量上传)——Spring(三)
在文件上传和下载(可批量上传)——Spring(二)的基础上,发现了文件下载时,只有在Chrome浏览器下文件名正常显示,还有发布到服务器后,不能上传到指定的文件夹目录,如上传20160310.txt ...
- nodejs读取excel内容批量替换并生成新的html和新excel对照文件
因为广告投放需要做一批对外投放下载页面,由于没有专门负责填充页面的编辑同学做,只能前端来做了, 拿到excel看了一下,需要生成200多个文件,一下子懵逼了. 这要是来回复制粘贴太low了 正好最新用 ...
- 文件上传和下载(可批量上传)——Spring(二)
针对SpringMVC的文件上传和下载.下载用之前“文件上传和下载——基础(一)”的依然可以,但是上传功能要修改,这是因为springMVC 都为我们封装好成自己的文件对象了,转换的过程就在我们所配置 ...
- 批量修改mp3文件的title等
批量修改mp3文件的title等 不是改文件名哦: 下载地址:https://mp3tag.en.softonic.com/ 帮助文档:file:///C:/Program%20Files%20(x8 ...
- ANDROID_MARS学习笔记_S01原始版_021_MP3PLAYER001_下载mp3文件
一.简介 1.在onListItemClick()中new Intent,Intent以存储序列化后的mp2Info对象作为参数,启动serivce 2.DownloadService在onStart ...
随机推荐
- 【DevOps】谁说大象不能跳舞?
作者:范军 (Frank Fan) 新浪微博:@frankfan7 微信:frankfan7 很多企业,尤其是大企业在产品开发和运维上存在着一些普遍问题,比如开发周期长.人员合作程度不高.开发和运 ...
- delphi Image 处理
procedure ResizeBmp(Src,Dst:String);var SrcBM,DstBM:TBitMap; Rect:TRect; NewW,NewH,PicW,PicH:Integer ...
- Java嵌入式数据库H2学习总结(三)——在Web应用中嵌入H2数据库
H2作为一个嵌入型的数据库,它最大的好处就是可以嵌入到我们的Web应用中,和我们的Web应用绑定在一起,成为我们Web应用的一部分.下面来演示一下如何将H2数据库嵌入到我们的Web应用中. 一.搭建测 ...
- ios 判断app程序第一次启动方法
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"firstStart"]){ [[NSUserDefaults st ...
- 【GitLab】【GitHub】GitLab和GitHub的双向同步
有这种需求,需要GitLab上的现有代码库,同步到GitHub上. 又有一种需求,需要将GitHub上的代码库,同步到gitlab上. 一.GitLab上的代码库,自动同步到GitHub上 大致需要三 ...
- .NET:默认是按值传递的
小测试 代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using S ...
- Thinking in Java---异常处理机制
java的异常处理机制能够使程序有极好的容错性,让程序更加的健壮.所谓的异常,就是指的阻止当前方法或作用域继续运行的问题,,当程序运行时出现异常时,系统就会自己主动生成一个Exception对象来通知 ...
- 《iOS 7 应用开发实战详解》
<iOS 7 应用开发实战详解> 基本信息 作者: 朱元波 管蕾 出版社:人民邮电出版社 ISBN:9787115343697 上架时间:2014-4-25 出版日期:2014 年5 ...
- Caffe的solver参数介绍
版权声明:转载请注明出处,谢谢! https://blog.csdn.net/Quincuntial/article/details/59109447 1. Parameters solver.p ...
- ptime概述
官方给出的ptime的定义是:ptime gives the length of time in milliseconds represented by themedia in a packet.简单 ...