Python抓取网络照片

该程序演示了如何使用Python爬虫从百度图片搜索中抓取并下载指定关键词的图片。首先初始化URL和请求头,然后通过requests库获取网页内容。正则表达式用于解析图片链接,接着创建目录保存图片,最后用save_image方法以二进制格式保存图片。

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

先上代码再做讲解

# 编写程序实现快速下载照片并保存到相应的目录
# 针对的网站主要是百度的图片
# -*- coding:utf8 -*-
import os
import re
from urllib import parse
import requests


class BaiduImageSpider:
    def __init__(self):
        self.url = 'https://image.baidu.com/search/flip?tn=baiduimage&word={}'
        self.headers = {'User-Agent': 'Mozilla/4.0'}

    def get_image(self, url, word):
        # 使用requests获取响应对象
        res = requests.get(url, headers=self.headers)
        # 改变编码格式
        res.encoding = 'utf-8'
        # 获取网页
        html = res.text
        print(html)
        # 正则解析
        pattern = re.compile('"hoverURL":"(.*?)"', re.S)
        img_link_list = pattern.findall(html)
        # 保存图片链接
        print(img_link_list)
        # 创建对应目录保存图片
        directory = 'D:/Python/Py_Scrapy/chap_2/image/{}/'.format(word)
        # 如果目录不在则创建
        if not os.path.exists(directory):
            os.makedirs(directory)

        # 计数添加
        i = 1
        for img_link in img_link_list:
            filename = '{}{}_{}.jpg'.format(directory, word, i)
            self.save_image(img_link, filename)
            i += 1

    # 保存函数
    def save_image(self, img_link, filename):
        html = requests.get(url=img_link, headers=self.headers).content
        with open(filename, 'wb') as f:
            f.write(html)
        print('下载成功')

    def run(self):
        word = input('您想要谁的照片')
        word_parse = parse.quote(word)
        url = self.url.format(word_parse)
        self.get_image(url, word)


if __name__ == '__main__':
    spider = BaiduImageSpider()
    spider.run()

本次所写的程序主要是基于爬虫实现对网页照片的抓取 这里主要针对的网址是百度图片

基本步骤主要有 

初始化相关信息


    def __init__(self):
        self.url = 'https://image.baidu.com/search/flip?tn=baiduimage&word={}'
        self.headers = {'User-Agent': 'Mozilla/4.0'}

发起网络响应 获取网页基本信息

解析网页 获取图片链接

这里将发起网络请求和解析网页获取图片链接都写在了get_html方法当中


    def get_image(self, url, word):
        # 使用requests获取响应对象
        res = requests.get(url, headers=self.headers)
        # 改变编码格式
        res.encoding = 'utf-8'
        # 获取网页
        html = res.text
        print(html)
        # 正则解析
        pattern = re.compile('"hoverURL":"(.*?)"', re.S)
        img_link_list = pattern.findall(html)
        # 保存图片链接
        print(img_link_list)
        # 创建对应目录保存图片
        directory = 'D:/Python/Py_Scrapy/chap_2/image/{}/'.format(word)
        # 如果目录不在则创建
        if not os.path.exists(directory):
            os.makedirs(directory)

        # 计数添加
        i = 1
        for img_link in img_link_list:
            filename = '{}{}_{}.jpg'.format(directory, word, i)
            self.save_image(img_link, filename)
            i += 1


列表保存相关的图片链接 在通过format方法拼凑成图片文件

在对网页解析处理后 又单独书写了一个保存方法 来完成对图片的保存


    # 保存函数
    def save_image(self, img_link, filename):
        html = requests.get(url=img_link, headers=self.headers).content
        with open(filename, 'wb') as f:
            f.write(html)
        print('下载成功')

 

注意:这里的图片文件的保存是二进制格式保存的

以上就是相关的函数处理过程 最后整合处理运行即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值