Python自动爬取图片并保存实例代码
本攻略将介绍如何使用Python自动爬取图片并保存到本地。我们将使用Python的requests库和BeautifulSoup库来获取和解析网页内容,使用os库和urllib库来创建和保存图片文件。
获取图片链接
我们可以使用Python的requests库和BeautifulSoup库来获取图片链接。以下是一个示例代码,用于获取百度图片搜索结果页面的图片链接:
import requests
from bs4 import BeautifulSoup
url = 'https://image.baidu.com/search/index?tn=baiduimage&word=cat'
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')
imgs = soup.find_all('img', class_='main_img')
for img in imgs:
print(img['src'])
在上面的代码中,我们使用requests库发送了一个HTTP请求,获取了百度图片搜索结果页面的内容。我们指定了请求的URL和请求头,使用get方法发送了请求,并使用text属性获取了响应内容。我们使用BeautifulSoup库对响应内容进行了解析,选择了所有class为'main_img'的img标签,并使用字典的方式获取了图片链接。我们遍历了所有的图片链接,并输出了它们的URL。
下载和保存图片
获取到图片链接后,我们需要将图片下载并保存到本地。以下是一个示例代码,用于下载和保存图片:
import requests
import os
import urllib
url = 'https://www.baidu.com/img/bd_logo1.png'
filename = os.path.basename(url)
urllib.request.urlretrieve(url, filename)
在上面的代码中,我们使用urllib库的urlretrieve方法下载了一张图片,并使用os库的basename方法获取了图片的文件名。我们将图片保存到了当前工作目录下。
示例1:自动爬取图片并保存到本地
以下是一个示例代码,用于自动爬取图片并保存到本地:
import requests
from bs4 import BeautifulSoup
import os
import urllib
url = 'https://image.baidu.com/search/index?tn=baiduimage&word=cat'
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')
imgs = soup.find_all('img', class_='main_img')
if not os.path.exists('images'):
os.mkdir('images')
for img in imgs:
url = img['src']
filename = os.path.basename(url)
filepath = os.path.join('images', filename)
urllib.request.urlretrieve(url, filepath)
在上面的代码中,我们使用os库创建了一个名为'images'的文件夹,用于存储下载的图片。我们遍历了所有的图片链接,并使用urlretrieve方法将图片下载并保存到'images'文件夹中。
示例2:自动爬取多个页面的图片并保存到本地
以下是一个示例代码,用于自动爬取多个页面的图片并保存到本地:
import requests
from bs4 import BeautifulSoup
import os
import urllib
if not os.path.exists('images'):
os.mkdir('images')
for i in range(1, 6):
url = f'https://image.baidu.com/search/index?tn=baiduimage&word=cat&pn={i*30}'
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')
imgs = soup.find_all('img', class_='main_img')
for img in imgs:
url = img['src']
filename = os.path.basename(url)
filepath = os.path.join('images', filename)
urllib.request.urlretrieve(url, filepath)
在上面的代码中,我们使用了一个循环,自动爬取了5个页面的图片。我们使用os库创建了一个名为'images'的文件夹,用于存储下载的图片。我们遍历了所有的图片链接,并使用urlretrieve方法将图片下载并保存到'images'文件夹中。
总结
本攻略介绍了如何使用Python自动爬取图片并保存到本地。我们可以使用requests库和BeautifulSoup库来获取和解析网页内容,使用os库和urllib库来创建和保存图片文件。我们还提供了两个示例,分别用于自动爬取图片并保存到本地和自动爬取多个页面的图片并保存到本地。这些技巧可以帮助我们更好地获取和管理图片资源。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python自动爬取图片并保存实例代码 - Python技术站