当前位置: 首页 > news >正文

苏州h5建站seo网络贸易网站推广

苏州h5建站,seo网络贸易网站推广,济南 域名注册 网站建设,js建设网站外网注#xff1a;源内容来自公众号【python学习开发】一般情况下我们使用爬虫更多的是对数据或者图片进行爬取,今天在这里和大家分享一下关于使用爬虫技术来进行视频下载的方法,不仅可以方便的下载一些体积小的视频,针对大容量的视频下载同样试用。接下来我们来介绍此次爬取视频过…注源内容来自公众号【python学习开发】一般情况下我们使用爬虫更多的是对数据或者图片进行爬取,今天在这里和大家分享一下关于使用爬虫技术来进行视频下载的方法,不仅可以方便的下载一些体积小的视频,针对大容量的视频下载同样试用。接下来我们来介绍此次爬取视频过程中用到的模块和方法。requests模块的iter_content方法这里我们使用的是python的requests模块作为例子,我们使用response.text获取文本信息,使用response.content获取字节流,比如下载图片保存到一个文件,而对于大个的文件我们需要采取分块读取的方式。requests.get方法的stream第一步我们需要设置requests.get的stream参数为True。默认情况下是stream的值为false它会立即开始下载文件并存放到内存当中倘若文件过大就会导致内存不足的情况当把get函数的stream参数设置成True时它不会立即开始下载当你使用iter_content或iter_lines遍历内容或访问内容属性时才开始下载。需要注意一点文件没有下载之前它也需要保持连接。iter_content一块一块的遍历要下载的内容iter_lines一行一行的遍历要下载的内容使用上面两个函数下载大文件可以防止占用过多的内存因为每次只下载小部分数据。示例代码:r  requests.get(url_file, streamTrue)f  open(file_path, wb)for chunk in r.iter_content(chunk_size512):if chunk:f.write(chunk)上面的代码表示请求了url_file这个url_file是一个大文件,所以开启了stream模式然后通过迭代r对象的iter_content方法同时指定chunk_size512(即每次读取512个字节)来进行读取。但是如果仅仅是迭代是不行如果下载中途出现问题我们之前的努力就白费了所以我们需要做到一个断点续传的功能。断点续传所谓断点续传也就是要从文件已经下载的地方开始继续下载。在以前版本的 HTTP 协议是不支持断点的HTTP/1.1 开始就支持了。一般断点下载时会用到 header请求头的Range字段这也是现在许多多线程下载工具(如 FlashGet、迅雷等)实现多线程下载的核心所在。如何在代码中实现用呢HTTP请求头Rangerange是请求资源的部分内容(不包括响应头的大小)单位是byte即字节从0开始.如果服务器能够正常响应的话服务器会返回 206 Partial Content 的状态码及说明.如果不能处理这种Range的话就会返回整个资源以及响应状态码为 200 OK .(这个要注意要分段下载时要先判断这个)Range请求头格式Range: bytesstart-endRange头域Range头域可以请求实体的一个或者多个子范围。例如表示头500个字节bytes0-499表示第二个500字节bytes500-999表示最后500个字节bytes-500表示500字节以后的范围bytes500-第一个和最后一个字节bytes0-0,-1同时指定几个范围bytes500-600,601-999例如Range: bytes10- 第10个字节及最后个字节的数据Range: bytes40-100 第40个字节到第100个字节之间的数据.注意这个表示[start,end]即是包含请求头的start及end字节的所以下一个请求应该是上一个请求的[end1, nextEnd]下载实例下面我们通过具体的代码去进一步了解一些细节。import requestsimport tqdmdef download_from_url(url, dst):response  requests.get(url, streamTrue) #(1)file_size  int(response.headers[content-length]) #(2)if os.path.exists(dst):first_byte  os.path.getsize(dst) #(3)else:first_byte  0if first_byte  file_size: #(4)return file_sizeheader  {Range: fbytes{first_byte}-{file_size}}pbar  tqdm(totalfile_size, initialfirst_byte,unitB, unit_scaleTrue, descdst)req  requests.get(url, headersheader, streamTrue) #(5)with(open(dst, ab)) as f:for chunk in req.iter_content(chunk_size1024): #(6)if chunk:f.write(chunk)pbar.update(1024)pbar.close()return file_size下面我们开始解读标有注释的代码:tqdm是一个可以显示进度条的包具体的用法可以参考官网文档:https://pypi.org/project/tqdm/(1)设置streamTrue参数读取大文件。(2)通过header的content-length属性可以获取文件的总容量。(3)获取本地已经下载的部分文件的容量方便继续下载当然需要判断文件是否存在如果不存在就从头开始下载。(4)本地已下载文件的总容量和网络文件的实际容量进行比较如果大于或者等于则表示已经下载完成否则继续。(5)开始请求视频文件了(6)循环读取每次读取一个1024个字节当然你也可以设置512个字节效果演示首先调用上面的方法并传入参数。视频我找的是南京大学的一个新闻视频。urlhttp://news.nju.edu.cn/uploadfiles/media/49debf11202e95e696120c74020ff658.mp4download_from_url(url, NanDa.mp4)效果如下图所示爬取NanDa新闻视频我们打开文件来看下视频如何爬取的视频可以发现这个视频被成功的下载下来。对于单文件的下载我们就完成,但是如果爬取的是多集的连续剧,我们下载一个系列的话,我们就得使用并发了,将在下一章讲述。Github地址https://github.com/muzico425/mp4download
http://www.zqtcl.cn/news/736793/

相关文章:

  • 公职单位建设网站的目的如何查看小程序的开发公司
  • 网页模板网站推荐青岛 php 网站建设
  • joomla 网站建设3d网站建设
  • 网站开发与维护专业前景网站被禁止访问怎么打开
  • 山东 网站建设青海公路建设市场信用信息服务网站
  • 济南正规做网站公司wordpress一键还原
  • 免费的购物网站源码百度网站优化
  • 企业需要做网站吗深圳装修公司前十强
  • 合肥做网站推广哪家好软文写作的十大技巧
  • 哪里做网站的wordpress歌词插件
  • 网站改版做301重定向百度站长平台查询
  • 织梦网站后台网址妙影免费模板下载
  • 甘肃网站建设开发怎么利用花生壳做自己的网站
  • 怎么查询网站开通时间建个短视频网站
  • 物流网站建设广东网站建设效果
  • 网站推广工作流程图天蝎网站建设
  • 备案ip 查询网站查询网站校园门户网站建设方案
  • 网站seo快速优化技巧建设网站的需要学习哪些课程
  • 网站建设微信托管wordpress p=
  • 专业手机网站制作哪家好吉林建筑大学本科招生网
  • 建立一个网站需要哪些google和百度等相关网站的广告词
  • 手机开发网站教程做古建的那些网站比较适合
  • 网站建设公司的前景长沙商城网站开发
  • 大型网站tag标签 索引自己做网站需要哪些软件
  • 石排做网站万网网站备案流程
  • 南京建设银行网站首页简单的ui界面制作
  • 门户网站 建设 如何写如何布置网站
  • 网站前台功能模块介绍建设银行信用卡网站是哪个好
  • 用python做网站我那些网站开发开发语言
  • 建设网站怎样做安卓app软件公司