python爬虫之下载文件的方式以及下载实例

目录

第一种方法:urlretrieve方法下载

第二种方法:request download

第三种方法:视频文件、大型文件下载

实战演示

第一种方法:urlretrieve方法下载

程序示例:

import os

from urllib.request import urlretrieve

os.makedirs('./img/',exist_ok=True) #创建目录存放文件

image_url = "https://p0.ssl.qhimg.com/t01e890e06c93018fa8.jpg"

urlretrieve(image_url,'./img1/image1.png') #将什么文件存放到什么位置

补充知识:

os.makedirs() 方法用于递归创建目录。像 mkdir(), 但创建的所有intermediate-level文件夹需要包含子目录。

语法

makedirs()方法语法格式如下:

os.makedirs(path, mode=0o777)

参数

path -- 需要递归创建的目录。

mode -- 权限模式。

返回值

该方法没有返回值。

第二种方法:request download

程序示例:

import requests

image_url='https://p0.ssl.qhimg.com/t01e890e06c93018fa8.jpg'

r = requests.get(image_url)

with open('./img1/image1.png','wb') as f:

f.write(r.content)

补充知识:

with open的使用格式

with open(’文件名","读写方式’)as f:

f.read() #读取是整个文件

f.readline() #读取第一行

f.readlines() #读取每一行,可以结合for使用(参考我上述完整代码),记得都要带方法都要带括号,不然返回的是内存地址

f.close() #关闭文件 文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的

f.write() #写入文件

第三种方法:视频文件、大型文件下载

可以设置每次存储文件的大小,所以可以下载大型文件,当然也可以下载小文件。

程序示例:

import requests

image_url = 'https://p0.ssl.qhimg.com/t01e890e06c93018fa8.jpg'

r = requests.get(image_url,stream=True) #stream=True #开启时时续续的下载的方式

with open(filename, 'wb') as f:

for chunk in r,iter_content(chunk_size=32): #chunk_size #设置每次下载文件的大小

f.write(chunk) #每一次循环存储一次下载下来的内容

实战演示

下面一个简单的使用爬虫下载图片的程序

爬取的是一个旅游网站的地图

程序示例:

import requests

import os

from bs4 import BeautifulSoup

from urllib.request import urlretrieve

def main():

url = 'http://www.onegreen.net/maps/List/List_933.html'

os.makedirs('./img/',exist_ok=True) #创建目录存放文件

html = requests.get(url).text #获取网页html

soup = BeautifulSoup(html,'lxml')

img_url = soup.find_all('img') #获取所有的img标签,我在这里只是演示下载,所有不做进一步的筛选

print(len(img_url))

for url in img_url:

ul = url['src'] #获取src属性

img = 'http://www.onegreen.net/' + ul #补全图片url

print(img)

urlretrieve(img , './img/%s' % ul.split('/')[-1]) #存储图片

if __name__ =='__main__':

main()

程序运行结果:

python爬虫下载-python爬虫之下载文件的方式总结以及程序实例相关推荐

  1. python 下载文件-python爬虫之下载文件的方式总结以及程序实例

    python爬虫之下载文件的方式以及下载实例 目录 第一种方法:urlretrieve方法下载 第二种方法:request download 第三种方法:视频文件.大型文件下载 实战演示 第一种方法: ...

  2. Python 技术篇-用zipfile库进行zip文件的压缩与解压实例演示,python压缩本地文件夹为zip文件并保留目录结构

    首先给大家演示下 zip 文件的解压方法. import zipfiledef zip_extract_to(path_zip, path_aim):'''作用:解压压缩包参数一:压缩包位置参数二:解 ...

  3. swt包下载,swt包引入(一个简单的SWT程序实例及详解)

    让我们从简单的 HelloWorld 应用程序开始. swt包下载可以在eclipse网站上下 进到下面这个地址里 http://www.eclipse.org/downloads/download. ...

  4. 电脑打开excel文件的方式没有excel程序

    手动查找excel 程序![在这里插入图片描述](https://img-blog.csdnimg.cn/eeb85a2c53444cf8be5e6423301f70cc.png?x-oss-proc ...

  5. python能以文本和二进制方式处理文件_Python文件处理之文件写入方式与写缓存(三)...

    Python的open的写入方式有: write(str):将str写入文件 writelines(sequence of strings):写多行到文件,参数为可迭代对象 首先来看下writelin ...

  6. 文件打开方式内没有notepad++解决方法

    下载notepad++后,右击文件打开方式没有notepad++打开方式 解决办法: 1.在桌面新建一个txt文本文件,右击文件,点击打开方式,点击 选择其他应用 2.点击更多应用 3.点击在这台电脑 ...

  7. 怎么访问和java包同级的文件_JAVA程序员谈几种访问文件的方式

    读取和写入文件都需要I/O操作调用系统提供的接口,因为磁盘设备是由系统来管理的,我们的应用程序要想访问物理设备只能通过这个方式.但是系统调用都是会涉及到内核空间地址和用户名空间地址的切换问题,原因是操 ...

  8. Python爬虫:爬取知乎上的视频,并把下载链接保存到md文件中

    Python爬虫:爬取知乎上的视频,并把下载链接保存到md文件中 1.需要的Python模块 主要是requests模块,用于得到的网页的数据 安装命令为:pip install requests 2 ...

  9. Python编曲实践(五):通过编写爬虫来爬取海量MIDI文件,预备构建数据集(附有百度云下载链接)

    前言 由于毕业设计的课题是通过CycleGAN搭建一个音乐风格转换系统,需要大量的音乐文件来训练神经网络,而MIDI文件作为最广泛使用的一种电脑编曲保存媒介,十分容易搜集资源,也有很多成熟的Pytho ...

最新文章

  1. 用VS(c#)创建、调试windows service以及部署卸载
  2. CC2540获取本机MAC地址
  3. .net中的SelectList在Html.DropdownList中的使用
  4. 第七届蓝桥杯-剪邮票(深搜+广搜)
  5. [WorldWind学习]18.High-Performance Timer in C#
  6. 寻找重复数—leetcode287
  7. 结构计算机分析,计算机系统结构 (三) CPU及其结构分析
  8. mysql安装、导入数据脚本
  9. MySQL故障检测_mysql主从故障检测处理脚本
  10. 如何才能快速提高自己的能力?!
  11. tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError:)...
  12. 铁路售票系统的设计分析(时序图、类图)
  13. 财务分析思维导图模板分享
  14. WERTYU - UVA - 10082
  15. 复习3个月,雅思首考7.0
  16. Java实现生成和解析二维码
  17. OpenCV中的归一化
  18. torch.flatten与torch.nn.flatten
  19. LC-MS/MS与LC-MS的区别与联系
  20. 基于mdm9206 threadx_os的gpio操作相关API介绍

热门文章

  1. harmonyos上的程序用什么语言写,HarmonyOS应用开发 — HelloWorld应用开发E2E体验
  2. server 2008 mysql 报错 0xc000007b_docker插件部署项目,volumes报错invalid volume specification...
  3. datetime数据类型_系统数据类型
  4. spark出现task不能序列化错误的解决方法 org.apache.spark.SparkException: Task not serializable...
  5. 用clock()统计代码的执行时间(C语言)
  6. 登上软件开发的和谐号
  7. VMware中安装CentOS Linux release 7.4.1708 (Core)
  8. BZOJ.4144.[AMPPZ2014]Petrol(Kruskal重构树)
  9. 不定长参数的装包与拆包
  10. [partial] C#里partial关键字的作用