python爬虫之下载文件的方式总结以及程序实例
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爬虫2——下载文件(中华网图片库下载)
# -*- coding: utf-8 -*- import requests import re import sys reload(sys) sys.setdefaultencoding('utf ...
- python爬虫脚本下载YouTube视频
python爬虫脚本下载YouTube视频 爬虫 python YouTube视频 工作环境: python 2.7.13 pip lxml, 安装 pip install lxml,主要用xpath ...
- python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码
python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...
- Python爬虫之三种数据解析方式
一.引入 二.回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需 ...
- Python接口自动化测试-下载文件
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Author : shenqiang ''' 注意:定义类的时候,内部方法之间的互调 步骤: 1.按照 ...
- python从FTP下载文件
#!/usr/bin/python # -*- coding: utf-8 -*- """ FTP常用操作 """ from ftplib ...
- Python+Selenium学习--下载文件
场景 webdriver 允许我们设置默认的文件下载路径.也就是说文件会自动下载并且存在设置的那个目录中,下面以firefox及chrome为例 代码 Firefox下载 为了让Firefox浏览器能 ...
- windows上python上传下载文件到linux服务器指定路径【转】
从windows上传文件到linux,目录下的文件夹自动创建 #!/usr/bin/env python # coding: utf-8 import paramiko import datetime ...
- Python 爬虫批量下载美剧 from 人人影视 HR-HDTV
本人比較喜欢看美剧.尤其喜欢人人影视上HR-HDTV 的 1024 分辨率的高清双字美剧,这里写了一个脚本来批量获得指定美剧的全部 HR-HDTV 的 ed2k下载链接.并依照先后顺序写入到文本文件, ...
随机推荐
- 【反射】利用java反射原理将xml文件中的字段封装成对应的Bean
本例使用的xml解析方式为jdom ... <ROOT> <Consignment> ... </Consignment> </ROOT> 解析xml文 ...
- CrossUI SPA Builder ---- feathers API框架
CrossUI SPA Builder: http://www.crossui.com/ 国产? 龙博(JSLINB)AJAX框架? CrossUI SPA Builderenables de ...
- Asp.Net Core 快速邮件队列设计与实现
发送邮件几乎是软件系统中必不可少的功能,在Asp.Net Core 中我们可以使用MailKit发送邮件,MailKit发送邮件比较简单,网上有许多可以参考的文章,但是应该注意附件名长度,和附件名不能 ...
- windows安装配置git和Tortoisegit
git github gitlab Tortoisegit 的概念自行百度 1. 安装git 2. 安装小乌龟:Tortoisegit 和中文包 3. 配置 4. 使用 参考: 目录 安装及配置 ...
- python flask安装
windows环境上,打开命令行,输入pip list 检查列表中是否安装过flask 安装flask命令:pip install flask 出现Successfully installed等提 ...
- Java基础93 JDBC连接MySQL数据库
本文知识点(目录): 1.什么是jdbc 2.jdbc接口的核心API 3.使用JDBC技术连接MySQL数据库的方法 4.使用Statement执行sql语句(DDL.DML. ...
- JS实现购物车01
需求 使用JS实现购物车功能01 具体代码 <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- Laravel 禁用指定 URL POST 请求的 csrf 检查
由于在 chrome 插件中使用了跨域请求,所以需要禁用掉 laravel 默认的 post csrf 检查. 配置方法: 在 app/Http/Middleware/VerifyCsrfToken. ...
- jquery中对父节点和子节点的利用
<tr id='new_tr'> <td id="td_1">td1</td> <td id="td_2">td ...
- poj3667 区间合并,找最左边的空余块
题很简单:给两个操作1:查找最左边的a个空余块并填满 2:把从第a个开始的连续b个块置空 线段树维护左连续,右连续,最大连续,lazy-tag即可,query函数值得学习 #include<io ...