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

 

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

 

 

目录

第一种方法:urlretrieve方法下载

第二种方法:request download

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

实战演示

 


第一种方法:urlretrieve方法下载

 

程序示例

1
2
3
4
5
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') #将什么文件存放到什么位置

  

 

补充知识

1
2
3
4
5
6
7
8
9
os.makedirs() 方法用于递归创建目录。像 mkdir(), 但创建的所有intermediate-level文件夹需要包含子目录。
语法
makedirs()方法语法格式如下:
os.makedirs(path, mode=0o777)
参数
path -- 需要递归创建的目录。
mode -- 权限模式。
返回值
该方法没有返回值。

  

 

 

 

第二种方法:request download

 

程序示例

1
import requests<br>image_url='https://p0.ssl.qhimg.com/t01e890e06c93018fa8.jpg'<br>r = requests.get(image_url) <br>with open('./img1/image1.png','wb') as f: <br>  f.write(r.content)

 

 

补充知识

1
2
3
4
5
6
with open的使用格式
 
with open(’文件名‘,‘读写方式’)as f:
    f.read()  #读取是整个文件
    f.readline()  #读取第一行
    f.readlines()    #读取每一行,可以结合for使用(参考我上述完整代码),记得都要带方法都要带括号,不然返回的是内存地址  <br>    f.close()    #关闭文件 文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的<br>    f.write()   #写入文件

  

 

 

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

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

 

程序示例

1
2
3
import requests
image_url = 'https://p0.ssl.qhimg.com/t01e890e06c93018fa8.jpg'r = requests.get(image_url,stream=True) #stream=True #开启时时续续的下载的方式<br>with open(filename, 'wb') as f:
  for chunk in r,iter_content(chunk_size=32): #chunk_size #设置每次下载文件的大小<br>    f.write(chunk)  #每一次循环存储一次下载下来的内容

  

 

 实战演示

 

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

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

 

程序示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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__':<br>    main()

 

 

程序运行结果

 

 

 

posted @   -零  阅读(21223)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示