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之入门(四)运算
May 27 Python
Python实现简单的可逆加密程序实例
Mar 05 Python
Python图算法实例分析
Aug 13 Python
对python中大文件的导入与导出方法详解
Dec 28 Python
pytorch torch.expand和torch.repeat的区别详解
Nov 05 Python
详解Python的三种拷贝方式
Feb 11 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
Jun 29 Python
在CentOS7下安装Python3教程解析
Jul 09 Python
详解Python中第三方库Faker
Sep 25 Python
python 实现控制鼠标键盘
Nov 27 Python
pycharm实现猜数游戏
Dec 07 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
Jan 27 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
造势之举?韩国总统候选人发布《星际争霸》地图
2017/04/22 星际争霸
PHP 面向对象 final类与final方法
2010/05/05 PHP
关于PHP自动判断字符集并转码的详解
2013/06/26 PHP
php一些错误处理的方法与技巧总结
2013/08/10 PHP
php打印输出棋盘的实现方法
2014/12/23 PHP
详解YII关联查询
2016/01/10 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
js showModalDialog弹出窗口实例详解
2014/01/07 Javascript
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
5款JavaScript代码压缩工具推荐
2014/07/07 Javascript
javascript获取文档坐标和视口坐标
2015/05/26 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
jquery删除table当前行的实例代码
2016/10/07 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
2017/08/23 Javascript
深入浅析Vue中的Prop
2018/06/10 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
[04:26]DOTA2上海特锦赛小组赛第二日 TOP10精彩集锦
2016/02/27 DOTA
[07:06]2018DOTA2国际邀请赛寻真——卫冕冠军Team Liquid
2018/08/10 DOTA
numpy中的高维数组转置实例
2018/04/17 Python
pandas 将list切分后存入DataFrame中的实例
2018/07/03 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
Django ImageFiled上传照片并显示的方法
2019/07/28 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
Python库安装速度过慢解决方案
2020/07/14 Python
Django使用django-simple-captcha做验证码的实现示例
2021/01/07 Python
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
大专应届生个人的自我评价
2013/11/21 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
2016党校学习心得体会
2016/01/07 职场文书
Linux中如何安装并部署Redis
2022/04/18 Servers
Nginx 常用配置
2022/05/15 Servers