Python爬虫文件下载图文教程


Posted in Python onDecember 23, 2018

而今天我们要说的内容是:如果在网页中存在文件资源,如:图片,电影,文档等。怎样通过Python爬虫把这些资源下载下来。

1、怎样在网上找资源:

就是百度图片为例,当你如下图在百度图片里搜索一个主题时,会为你跳出一大堆相关的图片。

还有如果你想学英语,找到一个网站有很多mp3的听力资源,这些可能都是你想获取的内容。

现在是一个互联网的时代,只要你去找,基本上能找到你想要的任何资源。

Python爬虫文件下载图文教程

2、怎样识别网页中的资源:

以上面搜索到的百度图片为例。找到了这么多的内容,当然你可以通过手动一张张的去保存,但这样做既费力又费事。你当然更希望通过程序自动去下载所找到的资源。要想代码识别这些资源,就要告诉代码这些资源有哪些特征,怎样在网页中找到它们。

打开浏览器的调试功能(不同浏览器可能有差别,不知道的百度一下吧)。找出网页中你想要下载资源的路径,如下图所示。如果有许多类似资源需要下载,则要找到识别这些资源地址的规律,然后告诉代码。

Python爬虫文件下载图文教程

3、资源下载方法一:

代码很简单,直接上代码:

from urllib.request import urlretrieve

urlretrieve("图片URL", "./image.jpg")

 

直接通过urlretrieve函数就把URL对应的图片给下载到当前文件夹(./)中了,并把图片命名为image.jpg。

4、资源下载方法二:

还是直接看代码:

import requests

resource = requests.get("图片URL")

with open("./image.jpg", mode="wb") as fh:

  fh.write(resource.content)

此下载方法要安装python的requests库。从功能上来说与下载方法一是一样的。python库的安装方法用pip就好。很简单,这里都不??铝恕?/p>

5、资源下载方法三:

看代码:

import requests

resource = requests.get("图片URL", stream=True)

with open("./image.jpg", mode="wb") as fh:

  for chunk in resource.iter_content(chunk_size=100):

    fh.write(chunk)

此方法与下载方法二的不同之处在于在get方法调用时使用了参数【stream=True】。而在写入的文件的时候是分块写入的。

什么意思呢:

前两种方法是把一个文件全部下载到内存后,再一起写入到硬盘文件中。

方法三是下载一定的量(这里指的是100字节)后,就写入到硬盘文件中,直到全部写完。

第三种方法的好处是,如果在下载大容量文件时,不会造成内存的过度使用。

6、资源下载说明一:

上述的代码都是通过下载图片资源为例子的,但所有其它资源,如文档,电影等的下载方式是一样的。关键是要正确的识别出网页中资源所对应的URL地址才能够正确的下载(因为有些资源是用的相对路径或加密后的路径)。

7、资源下载说明二:

上面例子中的代码都是下载单一资源的。如果要在同一网页中下载多个资源的思路如下:

1. 找出要下载资源的URL,并形成一个资源集合;

2. 把下载函数中的资源URL与保存路径参数化;

3. 遍历资源集合,依靠循环调用下载函数来达到多个资源下载的目的。

总结:以上就是本次介绍关于Python爬虫下载文件的所有知识点内容,感谢大家的阅读。

Python 相关文章推荐
python选择排序算法实例总结
Jul 01 Python
Python中MySQL数据迁移到MongoDB脚本的方法
Apr 28 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
Feb 21 Python
Python3随机漫步生成数据并绘制
Aug 27 Python
对python中的argv和argc使用详解
Dec 15 Python
python读写csv文件的方法
Aug 13 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
Oct 24 Python
python 实现矩阵填充0的例子
Nov 29 Python
python+opencv3生成一个自定义纯色图教程
Feb 19 Python
python合并多个excel文件的示例
Sep 23 Python
利用python为PostgreSQL的表自动添加分区
Jan 18 Python
python解包用法详解
Feb 17 Python
python爬虫获取百度首页内容教学
Dec 23 #Python
Python爬虫设置代理IP(图文)
Dec 23 #Python
celery4+django2定时任务的实现代码
Dec 23 #Python
python3使用pandas获取股票数据的方法
Dec 22 #Python
Python实现将通信达.day文件读取为DataFrame
Dec 22 #Python
python3 cvs将数据读取为字典的方法
Dec 22 #Python
python将txt等文件中的数据读为numpy数组的方法
Dec 22 #Python
You might like
PHP设计模式 注册表模式
2012/02/05 PHP
2个Codeigniter文件批量上传控制器写法例子
2014/07/25 PHP
PHP微信开发之有道翻译
2016/06/23 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
Array.prototype 的泛型应用分析
2010/04/30 Javascript
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
jQuery右下角旋转环状菜单特效代码
2015/08/10 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
jQuery中trigger()与bind()用法分析
2015/12/18 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
Easyui Tree获取当前选择节点的所有顶级父节点
2017/02/14 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
2017/07/03 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
ReactJS实现表单的单选多选和反选的示例
2017/10/13 Javascript
实例解析Vue.js下载方式及基本概念
2018/05/11 Javascript
jQuery实现的简单歌词滚动功能示例
2019/01/07 jQuery
微信小程序错误this.setData报错及解决过程
2019/09/18 Javascript
对python判断是否回文数的实例详解
2019/02/08 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
2019/02/19 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
2020/02/29 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
PHP如何去执行一个SQL语句
2016/03/05 面试题
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
小学防溺水制度
2014/01/29 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
有关九一八事变的演讲稿
2014/09/14 职场文书
个人查摆问题整改措施
2014/10/04 职场文书
2019入党申请书格式
2019/06/25 职场文书
导游词之安徽醉翁亭
2020/01/10 职场文书
24年收藏2000多部退役军用电台
2022/02/18 无线电