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中的异常处理学习笔记
Jan 28 Python
Python内置函数 next的具体使用方法
Nov 24 Python
Python数据拟合与广义线性回归算法学习
Dec 22 Python
简单了解什么是神经网络
Dec 23 Python
使用python3+xlrd解析Excel的实例
May 04 Python
tensorflow实现简单的卷积神经网络
May 24 Python
pandas.DataFrame.to_json按行转json的方法
Jun 05 Python
python微信公众号之关注公众号自动回复
Oct 25 Python
通过实例解析Python return运行原理
Mar 04 Python
使用python-Jenkins批量创建及修改jobs操作
May 12 Python
Python多分支if语句的使用
Sep 03 Python
神经网络训练采用gpu设置的方式
Mar 03 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初学者头疼问题总结
2006/07/08 PHP
php中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
php简单实现MVC
2015/02/05 PHP
php链表用法实例分析
2015/07/09 PHP
从刷票了解获得客户端IP的方法
2015/09/21 PHP
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
javascript常用函数(1)
2015/11/04 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
浅析在javascript中创建对象的各种模式
2016/05/06 Javascript
NodeJS基础API搭建服务器详细过程记录
2017/04/01 NodeJs
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
javascript 初学教程及五子棋小程序的简单实现
2017/07/04 Javascript
Angular实现的日程表功能【可添加及隐藏显示内容】
2017/12/27 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
js表达式与运算符简单操作示例
2020/02/15 Javascript
详解使用mocha对webpack打包的项目进行"冒烟测试"的大致流程
2020/04/27 Javascript
Python使用遗传算法解决最大流问题
2018/01/29 Python
Python离线安装PIL 模块的方法
2019/01/08 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
django将网络中的图片,保存成model中的ImageField的实例
2019/08/07 Python
自定义django admin model表单提交的例子
2019/08/23 Python
python怎么提高计算速度
2020/06/11 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
PyQt 如何创建自定义QWidget
2021/03/24 Python
2014年消防工作实施方案
2014/02/20 职场文书
加多宝凉茶广告词
2014/03/18 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
法定代表人授权委托书格式
2014/10/14 职场文书
个人存款证明书
2014/10/18 职场文书
MySQL系列之二 多实例配置
2021/07/02 MySQL
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript