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删除某个字符
Mar 19 Python
Pandas 对Dataframe结构排序的实现方法
Apr 10 Python
PyQt4实现下拉菜单可供选择并打印出来
Apr 20 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
Django中间件实现拦截器的方法
Jun 01 Python
python实现给scatter设置颜色渐变条colorbar的方法
Dec 13 Python
python使用itchat模块给心爱的人每天发天气预报
Nov 25 Python
Python tkinter常用操作代码实例
Jan 03 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
Jan 20 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
Feb 26 Python
基于SpringBoot构造器注入循环依赖及解决方式
Apr 26 Python
python 进阶学习之python装饰器小结
Sep 04 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/10/09 PHP
解析php类的注册与自动加载
2013/07/05 PHP
javascript some()函数用法详解
2014/11/13 PHP
php通过各种函数判断0和空
2020/07/04 PHP
js活用事件触发对象动作
2008/08/10 Javascript
jquery判断checkbox(复选框)是否被选中的代码
2010/10/20 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
jQuery插件PageSlide实现左右侧栏导航菜单
2015/04/12 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
jQuery操作css样式
2017/05/15 jQuery
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
利用express启动一个server服务的方法
2017/09/17 Javascript
vue2过滤器模糊查询方法
2018/09/16 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
python数据结构之二叉树的遍历实例
2014/04/29 Python
浅谈django model的get和filter方法的区别(必看篇)
2017/05/23 Python
widows下安装pycurl并利用pycurl请求https地址的方法
2018/10/15 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
2019/06/14 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
python 字符串的驻留机制及优缺点
2020/06/19 Python
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
银行柜员应聘推荐信范文
2013/11/24 职场文书
大班幼儿评语大全
2014/04/30 职场文书
环卫工作汇报材料
2014/10/28 职场文书
2014年电教工作总结
2014/12/19 职场文书
2015年幼儿园中班工作总结
2015/04/25 职场文书
分享几个简单MySQL优化小妙招
2022/03/31 MySQL
Java Spring Lifecycle的使用
2022/05/06 Java/Android