前言
公司最近有个现场签到抽奖的活动,期间需要模拟一些签到用户数据(用户昵称、头像)。为了让签到的用户头像更加真实,因此从百度图片素材库中,去提取一些图片作为用户头像。
下方代码会从百度图片素材库中获取图片的链接,最终存放在一个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)