python 爬取图片并保存函数_Python爬取网站图片并保存的实现示例

本文详细介绍了如何使用Python的requests和BeautifulSoup库爬取并保存bilibili网站上的图片。首先通过设置headers伪装成浏览器进行网页请求,然后解析HTML找到图片元素,最后下载并以图片标题为名保存图片。
摘要由CSDN通过智能技术生成

先看看结果吧,去bilibili上拿到的图片=-=

53989ce5805cec2132995bc75118dc85.png

第一步,导入模块

import requests

from bs4 import BeautifulSoup

requests用来请求html页面,BeautifulSoup用来解析html

第二步,获取目标html页面

hd = {'user-agent': 'chrome/10'} # 伪装自己是个(chrome)浏览器=-=

def download_all_html():

try:

url = 'https://www.bilibili.com/' # 将要爬取网站的地址

request = requests.get(url, timeout=30, headers=hd) # 获取改网站的信息

request.raise_for_status() # 判断状态码是否为200,!=200显然爬取失败

request.encoding = request.apparent_encoding # 设置编码格式

return request.text # 返回html页面

except:

return ''

第三步,分析网站html构造

1、显示网站html代码

b6544f9e17da170b484eb4ccee4647ad.png

2、找到图片位置

9a3ae47c779289060189658e8eef6ddf.png

3、分析

d52ef2851dc6dbd79be37cc59620ccb7.png

fa390f7cb31e7aa2c5dcc5f0c0dfaa2e.png

第四步,直接上代码注释够详细=-=

def parse_single_html(html):

soup = BeautifulSoup(html, 'html.parser') # 解析html,可以单独去了解一下他的使用

divs = soup.find_all('div', class_='card-pic') # 获取满足条件的div,find_all(所有)

for div in divs: # 瞒住条件的div有多个,我们单独获取

p = div.find('p') # 有源代码可知,每个div下都有一个p标签,存储图片的title,获取p标签

if p == None:

continue

title = p['title'] # 获取p标签中的title属性,用来做图片的名称

img = div.find('img')['src'] # 获取图片的地址

if img[0:6] != 'https:': # 根据源代码发现,有的地址缺少"https:"前缀

img = 'https:' + img # 如果缺少,我们给他添上就行啦,都据情况而定

response = requests.get(img) # get方法得到图片地址(有的是post、put)基本是get

with open('./Img/{}.png'.format(title), 'wb') as f: # 创建用来保存图片的.png文件

f.write(response.content) # 注意,'wb'中的b 必不可少!!

parse_single_html(download_all_html()) # 最后调用我们写的两个函数就行啦,

f26bc04e67b999c3fb2bfb550b663636.png

查看结果

a7ce14c89e3676d7d103a6549179e9fa.png

到此这篇关于Python爬取网站图片并保存的实现示例的文章就介绍到这了,更多相关Python爬取图片保存内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

Python中,可以使用多种方式来爬取网页上的图片并将其保存到本地。通常,这个过程会涉及以下几个步骤: 1. 使用requests库获取网页内容。 2. 解析网页内容,找到图片的URL。 3. 再次使用requests库下载图片。 4. 将下载的图片保存到本地文件系统。 以下是一个简单的示例代码,演示了如何实现这个过程: ```python import requests from bs4 import BeautifulSoup # 定义保存图片函数 def save_image(image_url, local_path): response = requests.get(image_url) if response.status_code == 200: with open(local_path, 'wb') as f: f.write(response.content) print(f"图片保存到:{local_path}") else: print("图片下载失败") # 目标网页URL url = 'http://example.com/' # 发送HTTP请求获取网页内容 response = requests.get(url) # 使用BeautifulSoup解析HTML soup = BeautifulSoup(response.text, 'html.parser') # 查找所有图片标签 images = soup.find_all('img') # 定义图片保存的本地路径前缀 local_folder = 'downloaded_images/' # 遍历所有图片标签 for img in images: # 获取图片的URL img_url = img.get('src') # 如果图片URL是完整的URL,则直接使用;否则,拼接完整路径 if not img_url.startswith('http'): img_url = url + img_url # 定义图片的本地保存路径 img_name = local_folder + img_url.split('/')[-1] # 调用保存图片函数 save_image(img_url, img_name) ``` 这段代码首先定义了一个`save_image`函数,用于下载图片保存到本地。然后通过requests库获取网页内容,并用BeautifulSoup解析HTML内容,找到所有图片标签并提取出图片的URL。最后,将每个图片下载并保存到本地路径。 注意,这只是一个基础示例,实际应用中可能需要处理更多的异常情况,比如网络请求失败、图片URL不完整或无法访问等。此外,还需要确保遵守网站的robots.txt规则和版权法律,不要非法爬取和使用网络资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值