今年支付宝的集福字就靠这个了,天天不重样

前言

2022 虎年大吉,共迎新春,新的一年,我希望通过”万虎“拼福字以及”万福“拼萌虎的方式,给大家带来好运,祝大家虎虎生威,顺风顺水,人生如意,财源滚滚!恭喜完了,下面就要亮技术了~

一、爬取福虎

通过 Python 爬虫技术,我们可以很方便快捷的从百度图片爬取到大量虎和福的图片,下面演示一下如何爬取:

1、网站分析

首先,我们打开百度图片,F12 打开控制台,然后搜索一个 ”虎年“,点击图片:

在滑动鼠标加载更多图片的同时,我们查看控制台中输出的内容,可以发现有很多数据包:

这里随便选择一条,并复制这个数据包的 URL 请求:

https://image.baidu.com/search/acjson?tn=resultjson_com&logid=11365856357363949053&ipn=rj&ct=201326592&is=&fp=result&fr=&word=%E8%99%8E%E5%B9%B4&queryWord=%E8%99%8E%E5%B9%B4&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&hd=&latest=&copyright=&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&expermode=&nojc=&isAsync=&pn=120&rn=30&gsm=78&1642056713314=

点开这个 URL 看到其携带的参数,复制这一段:

tn: resultjson_com
logid: 11365856357363949053
ipn: rj
ct: 201326592
is: 
fp: result
fr: 
word: 虎年
queryWord: 虎年
cl: 2
lm: -1
ie: utf-8
oe: utf-8
adpicid: 
st: -1
z: 
ic: 0
hd: 
latest: 
copyright: 
s: 
se: 
tab: 
width: 
height: 
face: 0
istype: 2
qc: 
nc: 1
expermode: 
nojc: 
isAsync: 
pn: 120
rn: 30
gsm: 78
1642056713314: 

至此,我们已经获取到所需的代码,分析结束!

2、爬取代码

关于代码编写部分的详细步骤我就不做描述了,以下分享下主要源码:

import requests
import os
from lxml import etree
path = r"/Users/lpc/Downloads/baidu1/"
# 判断目录是否存在,存在则跳过,不存在则创建
if os.path.exists(path):pass
else:os.mkdir(path)page = input('请输入要爬取多少页:')
page = int(page) + 1
header = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
}
n = 0
pn = 1
# pn是从第几张图片获取 百度图片下滑时默认一次性显示30张
for m in range(1, page):url = 'https://image.baidu.com/search/acjson?'param = {'tn': 'resultjson_com','logid': '7680290037940858296','ipn': 'rj','ct': '201326592','is': '','fp': 'result','queryWord': '虎年','cl': '2','lm': '-1','ie': 'utf-8','oe': 'utf-8','adpicid': '','st': '-1','z': '','ic': '0','hd': '1','latest': '','copyright': '','word': '虎年','s': '','se': '','tab': '','width': '','height': '','face': '0','istype': '2','qc': '','nc': '1','fr': '','expermode': '','nojc': '','acjsonfr': 'click','pn': pn,  # 从第几张图片开始'rn': '30','gsm': '3c','1635752428843=': '',}page_text = requests.get(url=url, headers=header, params=param)page_text.encoding = 'utf-8'page_text = page_text.json()print(page_text)# 先取出所有链接所在的字典,并将其存储在一个列表当中info_list = page_text['data']# 由于利用此方式取出的字典最后一个为空,所以删除列表中最后一个元素del info_list[-1]# 定义一个存储图片地址的列表img_path_list = []for i in info_list:img_path_list.append(i['thumbURL'])# 再将所有的图片地址取出,进行下载# n将作为图片的名字for img_path in img_path_list:img_data = requests.get(url=img_path, headers=header).contentimg_path = path + str(n) + '.jpg'with open(img_path, 'wb') as fp:fp.write(img_data)n = n + 1pn += 29

以上方式可以实现爬取百度图片,但是每次都要去分析爬取,比较麻烦且不智能,因此再分享一个运行后只需要输入关键词 “虎年” 即可爬取的源码:

# -*- coding:utf-8 -*-
import requests
import re, time, datetime
import os
import random
import urllib.parse
from PIL import Image  # 导入一个模块imgDir = r"/Volumes/DBA/python/img/"
# 设置headers 为了防止反扒,设置多个headers
# chrome,firefox,Edge
headers = [{'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36','Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2','Connection': 'keep-alive'},{"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0','Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2','Connection': 'keep-alive'},{"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19041','Accept-Language': 'zh-CN','Connection': 'keep-alive'}
]picList = []  # 存储图片的空 Listkeyword = input("请输入搜索的关键词:")
kw = urllib.parse.quote(keyword)  # 转码# 获取 1000 张百度搜索出来的缩略图 list
def getPicList(kw, n):global picListweburl = r"https://image.baidu.com/search/acjson?tn=resultjson_com&logid=11601692320226504094&ipn=rj&ct=201326592&is=&fp=result&queryWord={kw}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=&z=&ic=&hd=&latest=&copyright=&word={kw}&s=&se=&tab=&width=&height=&face=&istype=&qc=&nc=1&fr=&expermode=&force=&cg=girl&pn={n}&rn=30&gsm=1e&1611751343367=".format(kw=kw, n=n * 30)req = requests.get(url=weburl, headers=random.choice(headers))req.encoding = req.apparent_encoding  # 防止中文乱码webJSON = req.textimgurlReg = '"thumbURL":"(.*?)"'  # 正则picList = picList + re.findall(imgurlReg, webJSON, re.DOTALL | re.I)for i in range(150):  # 循环数比较大,如果实际上没有这么多图,那么 picList 数据不会增加。getPicList(kw, i)for item in picList:# 后缀名 和名字itemList = item.split(".")hz = ".jpg"picName = str(int(time.time() * 1000))  # 毫秒级时间戳# 请求图片imgReq = requests.get(url=item, headers=random.choice(headers))# 保存图片with open(imgDir + picName + hz, "wb") as f:f.write(imgReq.content)#  用 Image 模块打开图片im = Image.open(imgDir + picName + hz)bili = im.width / im.height  # 获取宽高比例,根据宽高比例调整图片大小newIm = None# 调整图片的大小,最小的一边设置为 50if bili >= 1:newIm = im.resize((round(bili * 50), 50))else:newIm = im.resize((50, round(50 * im.height / im.width)))# 截取图片中 50*50 的部分clip = newIm.crop((0, 0, 50, 50))  # 截取图片,crop 裁切clip.convert("RGB").save(imgDir + picName + hz)  # 保存截取的图片print(picName + hz + " 处理完毕")

演示一下此种方式,运行后输入 “虎年” 回车等待下载完成即可:

以上就是爬取百度图片的源码,分别爬取 “福” 和 “虎” 之后,我们就可以开始万图成像啦!

二、万图成像

万图成像很简单,之前我也写过一篇类似的文章有介绍过:Python 批量爬取猫咪图片实现千图成像 ,可以参考一下!

效果图

下面直接上传我们拼好的效果图:

三、我用SQL写福字

SQL如下:

create table LuciferFu(fu_line varchar2(128));
insert into LuciferFu values('22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222'),
('22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222'),
('22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222'),
('22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222'),
('2222222222222222222222222222222222222222222222222222222222222222222222222/[[    .\2222222222222222222222222222222222'),
('2222222222222222222222222222222222222222222222222222222222222222222/[.              ,2222222222222222222222222222222'),
('222222222222222222222222/2[222222222222222222222222222222222222`                      \22222222222222222222222222222'),
('222222222222222222222222^                ,\2222222222222222[`                          =2222222222222222222222222222'),
('2222222222222222222222222                   \22222222/2[                               \2222222222222222222222222222'),
('2222222222222222222222222                     22222\                                  ]22222222222222222222222222222'),
('2222222222222222222222222^                     \2222                             .]/22222222222222222222222222222222'),
('22222222222222222222222222                      2222`                 .,,]]/2222222222222222222222222222222222222222'),
('222222222222222222222222222                     \2222]  ,/2/,/222222222222222222222222222222222222222222222222222222'),
('2222222222222222222222222222                    .22222222`/222222222222222222222222222222222222222222222222222222222'),
('22222222222222222222222222222.                  ,\2222\`/222222222222222222[.       ..[22222222222222222222222222222'),
('2222222222222222222222222222`                   =222^  2222222222222[`                 ,2222222222222222222222222222'),
('22222222222222222222222222^   ]2\]`              =2`   2222222/`                        2222222222222222222222222222'),
('222222222222222222222222/   /22222222\`      ,]222`    ,2[`                            =2222222222222222222222222222'),
('2222222222222222222222/   /2222222222222222222222^                                 ,22222222222222222222222222222222'),
('222222222222222222222^ ,/2222222[`   ,[[[\2222222.                .]/22^          /222222222222222222222222222222222'),
('2222222222222222222/ ,/222222/`            ,22222          ,]]]222222`           =2222222222222222222222222222222222'),
('222222222222222222`,2222222/[               /222^        ,22222222/`             [2222222222222222222222222222222222'),
('2222222222222222^ /22222222^               /222/          222222[                   ,2222222222222222222222222222222'),
('22222222222222/ ,222222222`                 22^           ,22/                      /2222222222222222222222222222222'),
('2222222222222/./2222222`                  ,22^                                    ]/22222222222222222222222222222222'),
('222222222222./222222[                    /22`    =^                            ,222222222222222222222222222222222222'),
('2222222222/,22222[                      ,,/     .2^                     ,]/22222222222222222222222222222222222222222'),
('22222222/./22[.                          `      22^              .]22222222222222222222/[[[[[\2222222222222222222222'),
('22222/`                                        222^           2222222222222222[[.                [\22222222222222222'),
('22222                    /2                   22222.          =22222222[`                           ,222222222222222'),
('2222^                  /22/                  =22222\           =2[`                                   ,2222222222222'),
('2222\              ,]22222                   2222222`                                                  .222222222222'),
('222222\]]]]`]]\/222222222`                 ,222222222                     ]/222\/2222\2/]`              ,22222222222'),
('222222222222222222222222`                 /[22222222/                     2222222222222222\             /22222222222'),
('22222222222222222222222^               ,`    ,22222^           .         =2/`,`[,[[\222222\             \22222222222'),
('2222222222222222222222^              ,/2^      ,222].     .]]222^        .             ,222             222222222222'),
('222222222222222222222/.             /222^       ,2222222222222222                       =2^            .222222222222'),
('222222222222222222222.              22222.       =222222222222/`                       =22.            ,222222222222'),
('22222222222222222222^             .222222.       .22222222/[                         ,`=22             =222222222222'),
('2222222222222222222^..  .. .      .\22222^        ,2222[.                           ]2222^.           .2222222222222'),
('22222222222222222/.....          ..2222222`. .   . ,^          .            .   ]\/222222.            =2222222222222'),
('22222222222222222........... . ....22222222... . .. ,` .. .    ... .. .    .. .222222222^       ...  .22222222222222'),
('2222222222222222`................ .\2222222^ ... ............,/22^...... ../222222222222.............=22222222222222'),
('22222222222222022`..................,\2222222`.........,\]]22222`........../222222222222^.............222222222222222'),
('2222222222222222^...................222222222..........=2222/.,`.....................\2.............=222222222222222'),
('222222222222222222.]22222..........,2222222222..........2/]222......................................2222222222222222'),
('2222222222222222222222222..........,2222222222^..........`.........................................,2222222222222222'),
('2222222222222222222222222^.........=22222222222^...................................................22222222222222222'),
('2222222222222222222222222^.........=222222222222\.................................................222222222222222222'),
('2222222222222222222222222^.*........=222222222222\...................,]]]/22222\...............,22222222222222222222'),
('2222222222222222222222222^...*....../2222222222222\.......]/22222222222222222222\...*..*.....,2222222222222222222222'),
('22222222222222222222222222......**]/2222222222222222\**,]2222222222222222222222222`.......,2222222222222222222222222'),
('22222222222222222222222222\/2\22222222222222222222222222222222222222222222222222222222222222222222222222222222222222'),
('22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222'),
('22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222'),
('22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222'),
('22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222');

效果图:

select * from LuciferFu;

感兴趣的朋友可以自己试试,玩转虎年!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/47409.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Markdown】让你快速无脑编写IT文档

一、什么是Markdown Markdown是一种可以使用普通文本编辑器编写的轻量级标记语言,通过简单的标记语法,可以使普通文本内容具有一定的格式,可以导出为Word、PDF…等多种格式文档,Markdown文件后缀名为".md"。 Markdown…

PC端/电脑端有没有识别二维码并分类的工具

4-1 现在有一个很奇怪的问题,几乎所有的二维码识别功能都是在手机上,而电脑上的都没有。 但是如果需要在电脑上识别二维码咋办?去搜索了一下,发现没有,或者很少。 如果自己的工作就是要识别很多二维码并且对它做分类…

ggplot进行曼哈顿图复现

最近看文献的时候看到一张曼哈顿图,是对绵羊进行种间fst的比较找受选择的位点,当时看到这张图就感觉与之前看过的曼哈顿与众不同,图中用线段来表示的具体数值而不是常规的点,看多了点图,感觉线图还挺好看,所…

图幅号与经纬度的换算

图幅号,如“I48E001004”,一般为10位数。 前三位“I48”表示所属1:100万图幅的行列号 ,地图基本都是在1:100万比例尺的行列式编号基础上划分的。 1:100万图幅的划分规则: 纬度行:从赤道开始算,纬度四度一行,南北纬各22行,用大写英文字母A,B,C…表示(南半球要在字母…

rtx2060为什么叫智商卡_八款RTX2060简单点评,谁是丐中丐,谁又是丐帮帮主

RTX2060上市也有一段时间了,各种大神也做了一系列的测试,结果让人非常吃惊,旗舰2060性价比还是太低了,认可度也很低,主要还是3000以下的受关注比较多。 蜗牛也看了一下评测,大致的结果是这样的 大家可以看一下频率和温度,价格不可靠,偏差比较大。 老实说呀,看了这个评…

学习笔记:设计模式-装饰器设计模式(JAVA)

概念 装饰器设计模式,也叫包装设计模式,他是作为现有类的一个包装,允许向一个现有的对象添加新的功能,同时又不改变其结构。给对象添加功能,一般两种方式,继承或者组合,将一个类的对象嵌入到另一…

HTML+CSS基本使用与操作(万字没有,万图快了o(╥﹏╥)o)

往期: JAVA 修炼秘籍第一章:《痛苦的折磨》 JAVA 修炼秘籍第二章:《逐渐魔化》 JAVA 修炼秘籍第三章:《绝地反击》 JAVA 修炼秘籍第四章:《闭关修炼》 JAVA 修炼秘籍第五章:《卧薪尝胆》 JAVA 修炼秘籍第六…

如何在10万张图片中快速找出有二维码的图片(万图找码)

前段时间有一老哥加我微信,问有没有一种软件,能在文件夹里的上万张图片中快速地找出有二维码的图片。 我帮他找了一下,没找到这种软件,我说我做一个试试看,于是就有了这个软件,起名字叫做《万图找码》&…

SVC进行图像识别——万图识别

1.导入模块 import numpy as np import pandas as pd from pandas import Series,DataFrame #SVC知识向量机学习模型 from sklearn.svm import SVC #读取二进制文件模块 import pickle as pickle #数据降维处理模块 from sklearn.decomposition import PCA #绘图模块 import m…

Chatgpt如何引入新的知识?我们来看下ACL2023 预训练模型能否对新注入的知识进行推理这篇文章

一、概述 title:Can LMs Learn New Entities from Descriptions? Challenges in Propagating Injected Knowledge 论文地址:https://arxiv.org/abs/2305.01651 相关代码: EKP数据和代码:GitHub - yasumasaonoe/entity_knowle…

计算机SCI期刊审稿人,一般关注论文的那些问题? - 易智编译EaseEditing

编辑主要关心: (1)文章内容是否具有足够的创新性? (2)文章主题是否符合期刊的受众读者? (3)文章方法学是否合理,数据处理是否充分? (…

让AI替你打工?GPT提升开发效率指南

👉导读 开发者日常的整个工作流中,AI 大模型能做什么?ChatGPT 等 AI 大模型能不能通过开发者的指引,一步步完成从技术方案输出、编码、测试、发布到运营维护的整套流程?使用中有什么避坑点?本文从实际研发流…

开源协议,曝出重大问题,目前无解

出品 | OSC开源社区(ID:oschina2013) 《The Register》发布了探讨更新开源许可证的文章。作者的观点正如文章标题所言:开源许可证需要摆脱 20 世纪 80 年代的束缚,并不断发展以应对人工智能。 他指出,自由软件和开源许…

网课录屏用什么软件好?Camtasia极简操作,课程重点一目了然

后疫情时代,线上线下相结合的课程形式越来越火。身为人名教师这两年明显感觉压力倍增啊,以前同事之间聊工作都是你的备课笔记拿来看看呢,现在都变成了你的录课视频让我参考参考呢。 为了给学生输出高质量的课堂内容,一款好用的录…

解码聊天机器人技术:权威指南

关键词:聊天机器人、跨境电商客户服务 作为一个跨境电商品牌您需要知道,当品牌在一分钟内回答客户的问题时,59% 的客户更有可能完成购买。 Business Insider 的一项研究还发现,只要您提供的客户服务有效、方便、快捷,…

全球首个AI合成主播发布,效果以假乱真!揭秘背后技术原理

边策 李根 发自 凹非寺 量子位 报道 | 公众号 QbitAI 搜狗又在乌镇世界互联网大会上搞了大新闻。 2016年,王小川在正式论坛里秀出AI同传,那是机器实时翻译技术,首次在高规格国际会议上实战应用。 而这一次,依然世界互联网大会&…

Python控制AI虚拟主播说话聊天源码分享

Python是非常简单可用的脚本语言,本次我们将介绍如何实用Python控制一个AI虚拟主播说话聊天。通过分析目前市场上可用的虚拟主播软件,发现Motionface是一个简单可用的虚拟主播软件,它提供简单的http接口,是实时响应的,不像其他虚拟主播软件(baidu,xunfei等)需要很高的算…

AI虚拟主播软件系统 搭建24小时不间断运营的数字人直播间的操作教程分享

现在直播都必须真人直播,没法做到24小时不间断直播。虚拟人直播系统,一天24小时在线直播,不要吃饭,也不要工资,每时每刻都在赚音浪,带货,那么具体AI虚拟主播软件是怎么操作的呢?今天…

虚拟主播怎么做出来的?今日安利:AI虚拟人物怎么弄?

某天,一位品牌店的老板向我寻求帮助,大概内容就是:“他最近要开拓线上店铺的直播渠道,直播时间较长,雇一位主播又费钱又辛苦,想制作一个符合品牌调性的AI虚拟人物来带货。”于是我跟他分享了制作虚拟主播的…

一文了解虚拟人主播

这两年,相信很多人都能在抖音、快手、微视等平台看到虚拟人主播的视频,形象逼真,表情动作自然,语言流畅,乍一看,就是一位真人!那为什么会有这么多人或者企业选择用虚拟人来做主播呢?…