鱼C论坛

 找回密码
 立即注册
查看: 941|回复: 4

求爬视频加快爬取的方法

[复制链接]
发表于 2018-6-6 23:41:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我在爬取视频的时候(.mp4等)的时候不管是用urllib.request.urlretrieve,还是用file.write()的方式感觉下载速度太慢,可能我这里网速有点慢,但是感觉比正常下载还要慢,请问有没有什么办法可以加快爬取速度吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-6-7 08:08:12 | 显示全部楼层
requests模块,例如这样:
  1. with closing(requests.get(download_url, headers=self.headers, stream=True)) as response:
  2.             chunk_size = 1024
  3.             content_size = int(response.headers['content-length'])
  4.             if response.status_code == 200:
  5.                 sys.stdout.write('[File Size]: %0.2f MB\n' % (content_size/chunk_size/1024))
  6.                 with open(path, 'wb') as f:
  7.                     for data in response.iter_content(chunk_size=chunk_size):
  8.                         f.write(data)
  9.                         size += len(data)
  10.                         f.flush()
  11.                         sys.stdout.write('[Progress]: %0.2f%%' % float(size/content_size*100) + '\r')
  12.                         sys.stdout.flush()
复制代码

设置chunk_size应该可以提高一点速度。
成功请帮忙采纳。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-7 10:51:48 From FishC Mobile | 显示全部楼层
各位大佬有没有什么好方法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-7 11:28:23 | 显示全部楼层
用requests模块,类似这样:
  1. with closing(requests.get(download_url, headers=self.headers, stream=True)) as response:
  2.             chunk_size = 1024
  3.             content_size = int(response.headers['content-length'])
  4.             if response.status_code == 200:
  5.                 sys.stdout.write('[File Size]: %0.2f MB\n' % (content_size/chunk_size/1024))
  6.                 with open(path, 'wb') as f:
  7.                     for data in response.iter_content(chunk_size=chunk_size):
  8.                         f.write(data)
  9.                         size += len(data)
  10.                         f.flush()
  11.                         sys.stdout.write('[Progress]: %0.2f%%' % float(size/content_size*100) + '\r')
  12.                         sys.stdout.flush()
复制代码

修改chunk_size加快速度。
  1. from contextlib import closing
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-7 11:41:47 From FishC Mobile | 显示全部楼层
Charles未晞 发表于 2018-6-7 11:28
用requests模块,类似这样:

修改chunk_size加快速度。

感觉这像个类,大佬,能稍微说明一下这段代码的意思吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-30 16:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表