Python爬虫爬取网页图片数据

本文介绍了使用Python爬虫从网页抓取并保存图片到本地的步骤,包括关键代码展示和运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python爬取一个网页的图片保存到相应的电脑存储盘文件夹

1、话不多说,看下列代码

import requests
import re


# 打开网页,获取网页源码地址
def getHtml(url):
    html = requests.get(url)
    # 返回一个网页源码
    return html.text


def getImag(html):
    imagelist = re.findall('img src="(.*?)" class="portrait"', html)

    pat = 'list/(.*?).png'
    ex = re.compile(pat)
    i = 1
    for url in imagelist:
        # print
        'Downloding:' + url
        # 从图片地址下载数据
        image = requests.get(url)
        #         获取英雄名(这里可以自己为文件取名就行,下面的name变量是从图片地址中提取到的英雄名)
        pat = 'list/(.*?).png'
        ex = re.compile(pat)
        if ex.search(url):
            name = ex.search(url).group(1)
        else:
            pat = 'heroes/(.*?)/hero-select'
            ex = re.compile(pat)
            if ex.search(url):
                name = ex
Python爬虫爬取网页图片通常通过以下几个步骤实现: 1. **引入必要的库**:首先需要安装如`requests`, `BeautifulSoup4`(用于解析HTML),以及`PIL`或`io`(处理图像数据)等库。 ```python import requests from bs4 import BeautifulSoup import io ``` 2. **发送HTTP请求获取网页内容**:使用`requests.get(url)`函数获取指定网页的HTML源码。 ```python url = 'http://example.com' response = requests.get(url) ``` 3. **解析HTML提取图片链接**:使用`BeautifulSoup`解析HTML文档,找到所有的图片元素(通常是`<img>`标签),然后提取src属性,即图片URL。 ```python soup = BeautifulSoup(response.text, 'html.parser') image_links = [img['src'] for img in soup.find_all('img', src=True)] ``` 4. **下载图片**:对每个图片链接,再次发起GET请求并保存到本地文件系统。 ```python for link in image_links: response_image = requests.get(link) filename = f'image_{link.split("/")[-1]}' with open(filename, 'wb') as file: file.write(response_image.content) ``` 5. **异常处理**:考虑到网络连接不稳定或其他可能的问题,记得添加适当的错误处理代码。 完整示例: ```python try: # ... 网页抓取和图片链接提取部分 ... # 下载图片 for link in image_links: try: response_image = requests.get(link, timeout=10) # 设置超时时间防止阻塞 if response_image.status_code == 200: img_data = io.BytesIO(response_image.content) img = Image.open(img_data) # 可能还需要进一步处理图片,例如调整大小、保存格式等 img.save(filename) else: print(f"Failed to download {link}, status code: {response_image.status_code}") except Exception as e: print(f"Error downloading image from {link}: {str(e)}") except requests.exceptions.RequestException as e: print("Request error:", str(e)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值