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 06 Python
python实现文件路径和url相互转换的方法
Jul 06 Python
Django与遗留的数据库整合的方法指南
Jul 24 Python
Python正则抓取新闻标题和链接的方法示例
Apr 24 Python
python实现爬山算法的思路详解
Apr 09 Python
谈一谈基于python的面向对象编程基础
May 21 Python
Python弹出输入框并获取输入值的实例
Jun 18 Python
PyCharm 创建指定版本的 Django(超详图解教程)
Jun 18 Python
Python求离散序列导数的示例
Jul 10 Python
Python3 Tkinkter + SQLite实现登录和注册界面
Nov 19 Python
完美解决python针对hdfs上传和下载的问题
Jun 05 Python
python实现监听键盘
Apr 26 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与已存在的Java应用程序集成
2006/10/09 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
Zend Framework动作控制器用法示例
2016/12/09 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
2017/05/04 PHP
Laravel源码解析之路由的使用和示例详解
2018/09/27 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
js获取变量
2006/08/24 Javascript
使用Modello编写JavaScript类
2006/12/22 Javascript
js查找某元素中的所有图片地址的方法
2014/01/16 Javascript
jquery移动点击的项目到列表最顶端的方法
2015/06/24 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
2016/09/19 Javascript
jQuery插件Echarts实现的渐变色柱状图
2017/03/23 jQuery
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
使用localStorage替代cookie做本地存储
2019/09/25 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
javascript实现移动端上传图片功能
2020/08/18 Javascript
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
python获取当前日期和时间的方法
2015/04/30 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
python矩阵的转置和逆转实例
2018/12/12 Python
python构建指数平滑预测模型示例
2019/11/21 Python
python实现图像全景拼接
2020/03/27 Python
python中的yield from语法快速学习
2020/11/06 Python
皇马官方商城:Real Madrid Store
2016/09/02 全球购物
印度第一网上礼品店:IGP.com
2020/02/06 全球购物
30年同学聚会感言
2014/01/30 职场文书
商场促销活动策划方案
2014/08/18 职场文书
2016年植树节红领巾广播稿
2015/12/17 职场文书