lonsty / weibo-image-spider

微博图片爬虫,极速下载、高清原图、多种命令、简单实用。
MIT License
70 stars 15 forks source link

图片只下载一半 #1

Closed LoveOctocat closed 3 years ago

LoveOctocat commented 4 years ago

图片下载下来,出现只显示一半的情况。 image

lonsty commented 4 years ago

能否给出更多细节:

LoveOctocat commented 4 years ago

以下载「王俊凯KarryWang工作室」这个账号为例:

~/Documents/weibo-image-spider master* ⇣
❯ python3 main.py -u 王俊凯KarryWang工作室 -d 微博照片

 - - - - - -+-+ Fri Jul 24 08:30:05 2020 +-+- - - - - -
   Nickname: 王俊凯KarryWang工作室
    User ID: 6349794947
Destination: /Users/XXXX/Documents/weibo-image-spider/微博照片/王俊凯KarryWang工作室
  Overwrite: False
  Thumbnail: False
 Max images: 2000

下载过程并没有报错: image 出现只下载一半的情况: image

我用的是 Mac 自带的 Preview 查看的,下图是我不做修改直接上传到 Github: 006VJ5Jxly1gdoelbggxqj33gg56ob2r

翻到原图: image

LoveOctocat commented 4 years ago

另外似乎我同时开几个终端去下载,可能遇到的概率会更大(但是暂无验证)。 昨天同时开了 3 个终端下载不同的账号,出现过 7、8 张显示不全的照片。

lonsty commented 4 years ago

谢谢反馈! 大概定位到问题了。

  1. 3个终端会有45个线程在跑,实际上一个终端就能把网络带宽占满,多开并不能加快下载速度,因为瓶颈在于带宽
  2. 下载的图片单个文件很大,20MB左右,小可能下载时服务器端频宽分配不足
  3. Python 的 requests 请求,在网络状况不好数据不完整的情况下,竟然不报错 :joy:

解决方式:

  1. 下载时通过 --max-workers 适量减少线程数,及保证良好的网络环境
  2. 更新代码,在下载后做完整性校验,需要额外性能开销
  3. 使用 PycURL 等更可靠的下载工具包,还要研究下
lonsty commented 4 years ago

对于这几张下载失败的图,把它们删了再跑一边就好了。小概率事件 哈哈