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

使用python下载文件_使用Python下载文件(大文件,重定向文件)

在网络上很多文件是使用http的方式提供下载。使用python做爬虫,爬文件是其中一个目标。

Python有很多包可以做http请求,如下:python内置的包: urllib,urllib2和urllib3

requests包,这是一个在urllib3上扩展的包

grequests,扩展requests包,用来处理异步的http功能。

这里使用requests来做文件下载,主要提供三种示例:小文件的爬取

大文件的爬取

重定向文件的爬取

requests包爬内容的基本用法

最基本的是使用request的get方法,就可以很简单下载一个网页。如下:import requests

url = 'https://www.baidu.com'

html = requests.get(url)

首先是引入requests包,然后向requests的get函数传入url作为参数即可。

requests包对小文件的爬取

上面的示例中,网页内容存放在html变量中。对于下载文件,我们往往需要以二进制的方式存放在文件中。

使用python内置的open函数以字节写的方式打开文件,把html.content里的内容写到文件中。如下:with open('filename.txt', 'wb') as r:

r.write(html.content)

requests包对大文件的爬取

对于大文件,我们就不能简单的调用html.content来获取文件内容。

这种情况下,requests以流的方式读取文件内容,它提供了request.iter_content方法可以让我们以迭代的方式读取,每次迭代读取内容称为块chunk,在读文件流时,指定读取的每块大小(chunk_size)。

示例如下:r = requests.get(url, Stream=True)

with open("filename.pdf",'wb') as Pypdf:

for chunk in r.iter_content(chunk_size=1024)

if chunk:

pypdf.write(ch)

requests包爬取重定向文件

对于重定向后的文件,requests.get()函数,提供了allow_redirects参数,我们只要把它设为True,就可以了。import requests

url = 'http://example.com/file.pdf'

response = requests.get(url, allow_redirects=True)

with open('filename.pdf') as Pypdf:

pypdf.write(response.content)

requests包提供了非常简单明了的api。更多高级用法可以查看这里。

相关文章:

  • 为什么python现在这么火_Python为什么这么火,您怎么看的?
  • python提示line3_python中使用tab键进行提示(python3有效)
  • python字典程序题_Python练习:字典
  • python转换函数使用_【已解决】Python中,将字符串转换为函数,并且实现带参数的函数调用...
  • phpthink验证旧密码_【法制警示】宁夏一手机店老板将他人旧手机回收,竟盗取其支付宝中5000余元......
  • python dll_python调用C dll api
  • pythoncsv数据类型_pandas读取CSV文件时查看修改各列的数据类型格式
  • python标准库os的方法_Python标准库os.path包、glob包使用实例
  • python数字排序_python中如何对数字排序
  • 有趣的python项目_Python几个有趣和特别的小故事
  • python缩进格式错误修改_17个新手常见Python运行时错误
  • python什么是关键字参数_python的位置参数、默认参数、关键字参数、可变参数区别...
  • python数学计算函数_python之数学函数篇
  • linux双系统_windows下的Linux子系统,双系统的日子结束了
  • dos命令执行bat文件_dos命令tree图文教程,树形图形显示路径目录文件和文件夹...
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 【附node操作实例】redis简明入门系列—字符串类型
  • Android Volley源码解析
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • export和import的用法总结
  • flask接收请求并推入栈
  • IP路由与转发
  • javascript 哈希表
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • python 学习笔记 - Queue Pipes,进程间通讯
  • supervisor 永不挂掉的进程 安装以及使用
  • Webpack 4 学习01(基础配置)
  • 从0到1:PostCSS 插件开发最佳实践
  • 分布式任务队列Celery
  • 分享一份非常强势的Android面试题
  • 计算机常识 - 收藏集 - 掘金
  • 聚类分析——Kmeans
  • 浏览器缓存机制分析
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 前端代码风格自动化系列(二)之Commitlint
  • 入门级的git使用指北
  • 突破自己的技术思维
  • 我这样减少了26.5M Java内存!
  • 项目实战-Api的解决方案
  • 原生js练习题---第五课
  • nb
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • MyCAT水平分库
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • ![CDATA[ ]] 是什么东东
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #includecmath
  • #WEB前端(HTML属性)
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • $forceUpdate()函数
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627