Python爬虫文件下载图文教程

 更新时间:2018年12月23日 09:26:46   作者:fangjun123fj  
在本篇内容里小编给大家分享的是关于Python爬虫文件下载的相关知识点内容,有需要的朋友们学习下。

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

1、怎样在网上找资源:

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

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

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

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

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

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

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就好。很简单,这里都不啰嗦了。

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通过m3u8文件下载合并ts视频的操作

    Python通过m3u8文件下载合并ts视频的操作

    这篇文章主要介绍了Python通过m3u8文件下载合并ts视频的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • 解决python明明pip安装成功却找不到包的问题

    解决python明明pip安装成功却找不到包的问题

    今天小编就为大家分享一篇解决python明明pip安装成功却找不到包的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • PyQt5每天必学之单行文本框

    PyQt5每天必学之单行文本框

    这篇文章主要为大家详细介绍了PyQt5每天必学之单行文本框的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Flask深入了解Jinja2引擎的用法

    Flask深入了解Jinja2引擎的用法

    Jinja2是基于python的模板引擎,功能比较类似于于PHP的smarty,J2ee的Freemarker和velocity。 它能完全支持unicode,并具有集成的沙箱执行环境,应用广泛。jinja2使用BSD授权
    2022-07-07
  • python模拟鼠标点击和键盘输入的操作

    python模拟鼠标点击和键盘输入的操作

    这篇文章主要介绍了python模拟鼠标点击和键盘输入的操作,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Django实现drf搜索过滤和排序过滤

    Django实现drf搜索过滤和排序过滤

    当我们需要对后台的数据进行过滤的时候,drf有两种,搜索过滤和排序过滤。本文就详细的介绍这两种的实现,感兴趣的可以了解一下
    2021-06-06
  • python人工智能算法之线性回归实例

    python人工智能算法之线性回归实例

    这篇文章主要为大家介绍了python人工智能算法之线性回归实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Matplotlib绘图基础之几何图形的绘制详解

    Matplotlib绘图基础之几何图形的绘制详解

    除了绘制各类分析图形(比如柱状图,折线图,饼图等等)以外,matplotlib 也可以在画布上任意绘制各类几何图形,下面小编就来和大家讲讲如何绘制常见的几种几何图形吧
    2023-08-08
  • 通过python扫描二维码/条形码并打印数据

    通过python扫描二维码/条形码并打印数据

    这篇文章主要介绍了通过python扫描二维码/条形码并打印数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 利用Python通过商品条形码查询商品信息的实现示例

    利用Python通过商品条形码查询商品信息的实现示例

    这篇文章主要介绍了利用Python通过商品条形码查询商品信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07

最新评论