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爬虫之下载文件的方式总结以及程序实例的更多相关文章

  1. python爬虫2——下载文件(中华网图片库下载)

    # -*- coding: utf-8 -*- import requests import re import sys reload(sys) sys.setdefaultencoding('utf ...

  2. python爬虫脚本下载YouTube视频

    python爬虫脚本下载YouTube视频 爬虫 python YouTube视频 工作环境: python 2.7.13 pip lxml, 安装 pip install lxml,主要用xpath ...

  3. python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码

    python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...

  4. Python爬虫之三种数据解析方式

    一.引入 二.回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需 ...

  5. Python接口自动化测试-下载文件

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Author : shenqiang ''' 注意:定义类的时候,内部方法之间的互调 步骤: 1.按照 ...

  6. python从FTP下载文件

    #!/usr/bin/python # -*- coding: utf-8 -*- """ FTP常用操作 """ from ftplib ...

  7. Python+Selenium学习--下载文件

    场景 webdriver 允许我们设置默认的文件下载路径.也就是说文件会自动下载并且存在设置的那个目录中,下面以firefox及chrome为例 代码 Firefox下载 为了让Firefox浏览器能 ...

  8. windows上python上传下载文件到linux服务器指定路径【转】

    从windows上传文件到linux,目录下的文件夹自动创建 #!/usr/bin/env python # coding: utf-8 import paramiko import datetime ...

  9. Python 爬虫批量下载美剧 from 人人影视 HR-HDTV

    本人比較喜欢看美剧.尤其喜欢人人影视上HR-HDTV 的 1024 分辨率的高清双字美剧,这里写了一个脚本来批量获得指定美剧的全部 HR-HDTV 的 ed2k下载链接.并依照先后顺序写入到文本文件, ...

随机推荐

  1. 【反射】利用java反射原理将xml文件中的字段封装成对应的Bean

    本例使用的xml解析方式为jdom ... <ROOT> <Consignment> ... </Consignment> </ROOT> 解析xml文 ...

  2. CrossUI SPA Builder ---- feathers API框架

    CrossUI SPA Builder:   http://www.crossui.com/ 国产?   龙博(JSLINB)AJAX框架? CrossUI SPA Builderenables de ...

  3. Asp.Net Core 快速邮件队列设计与实现

    发送邮件几乎是软件系统中必不可少的功能,在Asp.Net Core 中我们可以使用MailKit发送邮件,MailKit发送邮件比较简单,网上有许多可以参考的文章,但是应该注意附件名长度,和附件名不能 ...

  4. windows安装配置git和Tortoisegit

    git github  gitlab  Tortoisegit 的概念自行百度 1. 安装git 2. 安装小乌龟:Tortoisegit  和中文包 3. 配置 4. 使用 参考: 目录 安装及配置 ...

  5. python flask安装

    windows环境上,打开命令行,输入pip  list  检查列表中是否安装过flask 安装flask命令:pip install flask 出现Successfully installed等提 ...

  6. Java基础93 JDBC连接MySQL数据库

    本文知识点(目录): 1.什么是jdbc     2.jdbc接口的核心API     3.使用JDBC技术连接MySQL数据库的方法    4.使用Statement执行sql语句(DDL.DML. ...

  7. JS实现购物车01

    需求 使用JS实现购物车功能01 具体代码 <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  8. Laravel 禁用指定 URL POST 请求的 csrf 检查

    由于在 chrome 插件中使用了跨域请求,所以需要禁用掉 laravel 默认的 post csrf 检查. 配置方法: 在 app/Http/Middleware/VerifyCsrfToken. ...

  9. jquery中对父节点和子节点的利用

    <tr id='new_tr'> <td id="td_1">td1</td> <td id="td_2">td ...

  10. poj3667 区间合并,找最左边的空余块

    题很简单:给两个操作1:查找最左边的a个空余块并填满 2:把从第a个开始的连续b个块置空 线段树维护左连续,右连续,最大连续,lazy-tag即可,query函数值得学习 #include<io ...