python爬虫系列之下载文件¶
0.导包¶
from urllib.request import urlretrieve
import os
os.makedirs('./img/',exist_ok=True)
1.使用urlretrieve下载文件¶
# 使用urlretrieve
IMAGE_URL = 'https://morvanzhou.github.io/static/img/description/learning_step_flowchart.png'
urlretrieve(IMAGE_URL,'./img/image1.png')
2.使用requests下载文件¶
# 使用requests
import requests
r = requests.get(IMAGE_URL)
with open('./img/image2.png','wb') as f:
f.write(r.content)
with open('./img/image3.png','wb') as f:
for chunk in r.iter_content(chunk_size=32):
f.write(chunk)
3.上述两种下载方式对比¶
- urlretrieve: 小文件
- requests:小或大文件
如果要下载的是大文件, 比如视频等. requests 能让你下一点, 保存一点, 而不是要全部下载完才能保存去另外的地方。 这就是一个 chunk 一个 chunk 的下载. 使用r.iter_content(chunk_size) 来控制每个 chunk 的大小, 然后在文件中写入这个 chunk 大小的数据。