Python实现获取百度图片URL

前言

公司最近有个现场签到抽奖的活动,期间需要模拟一些签到用户数据(用户昵称、头像)。为了让签到的用户头像更加真实,因此从百度图片素材库中,去提取一些图片作为用户头像。

下方代码会从百度图片素材库中获取图片的链接,最终存放在一个list中。



import requests
import re
from urllib import parse


class ImageSpider:
    def __init__(self, num):
        self.url = 'https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word={}{}'
        self.headers = {'User-Agent': 'Mozilla/4.0'}
        self.word_parse = ''
        self.image_list = []  # 存储图片容器
        self.num = num  # 获取图片 URL 数量

    def get_image(self, url):
        # 使用 requests模块得到响应对象
        res = requests.get(url, headers=self.headers)
        # 更改编码格式
        res.encoding = "utf-8"
        # 得到html网页
        html = res.text
        # 正则解析
        pattern = re.compile('"hoverURL":"(.*?)"', re.S)
        img_link_list = pattern.findall(html)
        for i in img_link_list:
            # 指定获取图片的数量
            if len(self.image_list) < self.num:
                self.image_list.append(i)
            else:
                return

    def main(self):
        word = ["壁纸", "头像"]
        # "冷酷", "男生", "霸气", "真实", "哪吒", "古风", "卡通", "头像", "伤感", "风景", "个性", "简单"

        for i in word:
            self.word_parse = parse.quote(i)
            url = self.url.format(self.word_parse, '&pn=0')
            self.get_image(url)
        if len(self.image_list) < self.num:
            print("图片素材不足,请考虑添加搜索图片关键字!")
        return self.image_list


if __name__ == '__main__':
    images = ImageSpider(200)
    a = images.main()
    print(a)

你可能感兴趣的:(python,开发语言)