在现代社会,图片在我们的生活中扮演着越来越重要的角色。随着互联网技术的发展,我们可以随时随地的浏览和获取到各种形式的图片。但是,有时候我们需要将这些图片下载到本地,这时候如果手动一个一个的保存,就会非常的麻烦和耗费时间。针对这种情况,我们可以借助Python来编写程序,实现批量下载图片到本地的功能。
一、准备工作
在使用Python下载图片之前,我们需要准备好Python环境。如果你还没有安装Python,请前往官网下载并安装。
接着,我们需要安装requests和BeautifulSoup这两个Python库。requests库是一个网络库,可以方便的向网站发起请求获取数据。而BeautifulSoup库是一个解析HTML和XML文档的第三方库,我们可以用它来提取网页中我们需要的数据。
pip install requests
pip install beautifulsoup4
二、Python编写程序
有了前面的准备工作之后,我们就可以开始编写Python程序来下载图片了。
1、获取图片链接
在下载图片之前,我们需要先获取到图片的链接地址。一般来说,我们可以通过爬取网页来获取到需要下载的图片链接和其他相关信息。
假设我们要从以下这个网页中下载图片:https://www.meituri.com/t/1506/
我们可以使用requests库来向该网页发送一个请求,并通过BeautifulSoup库对返回的结果进行解析。
import requests
from bs4 import BeautifulSoup
url = 'https://www.meituri.com/t/1506/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
links = []
for img in soup.find_all('img'):
links.append(img.get('src'))
在上面的代码中,我们通过requests库向目标网页发送了一个GET请求,并使用BeautifulSoup库解析了返回的结果。在解析时,我们使用了soup.find_all('img')方法,这个方法可以帮助我们查找网页中所有的img标签,并返回它们的属性,也就是图片的链接地址。我们将这些链接保存在了links列表中。
2、下载图片
有了需要下载的图片链接之后,我们就可以使用Python编写程序来将图片下载到本地。
import os
path = 'test/'
if not os.path.exists(path):
os.makedirs(path)
for link in links:
filename = path + link.split('/')[-1]
try:
response = requests.get(link, headers=headers)
with open(filename, 'wb') as f:
f.write(response.content)
except:
print(link, '下载失败')
在上面的代码中,我们首先创建了一个名为test的文件夹,用来保存下载的图片。如果这个文件夹不存在,我们会使用os.makedirs()方法创建它。
然后,我们对每个图片链接进行遍历,先通过split方法获取该链接的文件名,然后使用requests库发送GET请求获取图片的二进制数据,并使用with open()方法将数据写入到本地文件中。
由于网络状况的不稳定,有些图片可能会下载失败。因此,我们使用了try/except语句来捕获异常,并打印出下载失败的链接地址。
三、总结
使用Python下载图片到本地是非常方便和实用的。我们可以借助Python的强大功能,批量下载海量的图片,从而提高我们的工作效率。