鱼C论坛

 找回密码
 立即注册
查看: 2283|回复: 5

Python小白从挖坑到脱坑之路022_关于利用Python下载文件

[复制链接]
发表于 2018-4-11 10:20:23 | 显示全部楼层 |阅读模式

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

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

x
请各位大佬分享一下下载文件、视频或其他类型的经验链接和好文,拜谢!

小文件下载

下载小文件的话考虑的因素比较少,给了链接直接下载就好了:

  1. import requests
  2. image_url = "https://www.python.org/static/community_logos/python-logo-master-v3-TM.png"

  3. r = requests.get(image_url) # create HTTP response object

  4. with open("python_logo.png",'wb') as f:
  5.     f.write(r.content)
复制代码


大文件下载

如果是小文件的话,一次性下载就OK了,但是如果文件比较大的话,那么下载下来的文件先放在内存中,内存还是比较有压力的。所以为了防止内存不够用的现象出现,我们要想办法把下载的文件分块写到磁盘中:

  1. import requests

  2. file_url = "http://codex.cs.yale.edu/avi/db-book/db4/slide-dir/ch1-2.pdf"

  3. r = requests.get(file_url, stream=True)

  4. with open("python.pdf", "wb") as pdf:
  5.     for chunk in r.iter_content(chunk_size=1024):
  6.         if chunk:
  7.             pdf.write(chunk)
复制代码

批量文件下载:

批量文件下载的思路也很简单,首先读取网页的内容,再从网页中抽取链接信息,比如通过a标签,然后再从抽取出的链接中过滤出我们想要的链接,比如在本例中,我们只想下载MP4文件,那么我们可以通过文件名过滤所有链接:

  1. import requests
  2. from bs4 import BeautifulSoup

  3. archive_url = "http://www-personal.umich.edu/~csev/books/py4inf/media/"


  4. def get_video_links():
  5.     r = requests.get(archive_url)
  6.     soup = BeautifulSoup(r.content, 'html5lib')
  7.     links = soup.findAll('a')
  8.     video_links = [archive_url + link['href'] for link in links if link['href'].endswith('mp4')]

  9.     return video_links


  10. def download_video_series(video_links):
  11.     for link in video_links:
  12.         file_name = link.split('/')[-1]

  13.         print("Downloading file:%s" % file_name)
  14.         r = requests.get(link, stream=True)

  15.         # download started
  16.         with open(file_name, 'wb') as f:
  17.             for chunk in r.iter_content(chunk_size=1024 * 1024):
  18.                 if chunk:
  19.                     f.write(chunk)

  20.         print("%s downloaded!\n" % file_name)


  21.     print("All videos downloaded!")

  22.     return


  23. if __name__ == "__main__":
  24.     video_links = get_video_links()
  25.     download_video_series(video_links)
复制代码

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-11 11:07:12 | 显示全部楼层
加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-11 14:27:59 | 显示全部楼层
很好留着我备用了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-24 01:24:28 | 显示全部楼层
mark
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-2-8 14:09:26 | 显示全部楼层
mark一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-14 16:54:44 | 显示全部楼层
mark
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 01:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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