python表情怎么打出来_python 获取搜狗输入法里面所有的表情图片
首先我们要使用fiddler爬取搜狗输入法表情接口,打开搜狗输入法键盘,里面有个表情,点击进去会进去搜狗的图片表情 ,其中有个输入框,我们要抓取的就是输入对应的文字,找到搜狗所有的管理按图片; 比如我输入的是
"哈士奇",会出现
其中的接口参数,我直接提供大家,大家可以按照这个接口格式进行获取图片
http://config.pinyin.sogou.com/picface/interface/query_zb.php?cands=5ZOI5aOr5aWH&tp=0&page=1&h=D9BB9D40B88283286D79B44EB3849EBE&v=8.9.0.2180&r=0000_sogoupinyin_8.9c&pv=6.1.7601&sdk=1.1.0.1819
其中只有参数 cands 以及 page 是变化的,cands是要搜索的条件即我们输入的"哈士奇",page是获取的页数
显然输入的中文进行了编码,这就是 base64编码,但是经过 python base64 编码得到的是5ZOI5aOr5aWH,而
我抓取接口参数是5zoi5AoR5Awh 。可能就是大小写的原因,但是我替换我生成的5ZOI5aOr5aWH参数,接口
没有返回参数,反而5zoi5AoR5Awh 就返回了参数。。。。。
2.难点介绍
1.cands 是base64 加密后的字符串,但是需要使用 python里面字符串函数 swapcase() ,这个函数的意思是
字符串内大写字符转化小写,而小写字母转化大写 , 即搜狗接口参数需要在我们进行base64加密之后进行
转化,接口才可通
2.解析图片,一般搜狗返回的是 图片url,比如
https://emoi-cncdn.bing.com/emotionimage/chat/b6be53fab273d5742de330b29e9f3a93.jpg, 这种我们自然
可以获取二进制和图片后缀, 但是搜狗也会返回
http://i03picsos.sogoucdn.com/3057c3f30647ee17 ,这种有二进制,但是不知道图片后缀
3.代码解释
# -*- coding: UTF-8 -*-
import base64
import sys,requests,json,os,re
#保存图片
def save_img(content,path,name):
isExists=os.path.exists(path)
if not isExists:
os.makedirs(path)
i_path = path+'\\'+name
with open(i_path,'ab') as f:
f.write(content)
#获取接口的json数据
def sougou_face(keyword,page):
#搜狗的base64 加密,得到字符串需要转化 ,接口才可以使用
serach_word = base64.b64encode(keyword)
serach_word = serach_word.swapcase() # 实现 大写转化小写,小写转化大写
url_send = 'http://config.pinyin.sogou.com/picface/interface/query_zb.php'
params = 'tp=0&page='+str(page)+'&h=D9BB9D40B88283286D79B44EB3849EBE&v=8.9.0.2180&r=0000_sogoupinyin_8.9c&pv=6.1.7601&sdk=1.1.0.1819';
url_send = url_send+'?cands='+serach_word+'&'+params
head={"Content-Type":"application/json;charset=utf-8"}
response = requests.get(url_send,headers=head)
return response.content
#解析图片
#http://i03picsos.sogoucdn.com/3057c3f30647ee17 可能存在这种图片
def list_img(sogou_data):
json_data = json.loads(sogou_data)
if(json_data['imglist']):
for k in json_data['imglist']:
img_id = k['id'] #图片唯一标识
img_type = k['url'][-3:]
img_list = ['jpg','gif','png']
#不带后缀时候 可以直接赋值后缀
if img_type not in img_list:
img_type = 'jpg'
response = requests.get(k['url']).content
path = 'D:\\python\\study\\splider\\mask\\img\\'+k['keywords']
save_img(response,path,img_id+'.'+img_type)
else:
print u'未找到图片,停止程序'
exit()
sogou_data = sougou_face('哈士奇',1)
list_img(sogou_data)
exit()
#====================== 代码解释 =====================
1.sogou_data = sougou_face('哈士奇',1)
搜索关键词为哈士奇,即接口参数中的 cands,1 代表搜索第一页,其中函数返回的是二进制
2.list_img(sogou_data)
根据二进制生成对应的图片 ,在函数 list_img 里面
img_id = k['id'] #图片唯一标识
img_type = k['url'][-3:]
img_list = ['jpg','gif','png']
#不带后缀时候 可以直接赋值后缀
if img_type not in img_list:
img_type = 'jpg'
就是上面所说的,返回如果没有图片后缀的话,我们自动给图片后缀为jpg,保存路径可自动更改
3.如果爬虫的同学,可以修改代码里面的 sougou_face('哈士奇',1) ,即修改参数页数,sougou_face('哈士奇',2)
sougou_face('哈士奇',3) sougou_face('哈士奇',4) ,循环即可自动抓去 ,本文只显示手动抓取某一页
4.这是早上突发奇想完成的,代码肯定有需要改善的地方,希望各位提出,谢谢!!
5.最后如果你在 本地调试 ,cmd命令里面直接传参数
cmd python test.py 哈士奇 1
只需要添加 ,至于为什么要编码 ,就是cmd窗口默认是gbk编码,我们接受的值需要转化
s_name = sys.argv[1].decode('gbk').encode('utf8')
s_page = sys.argv[2]
sogou_data = sougou_face(s_name,s_page)
list_img(sogou_data)
exit()
最后显示部分成果
python表情怎么打出来_python 获取搜狗输入法里面所有的表情图片相关推荐
- python函数的用法字帖_Python 3 爬虫之批量下载字帖图片
朋友想下载这62个网页中的字帖图片:http://www.yac8.com/news/11003.html 一.要点 1. Chrome 「审查元素」中看到的源代码与真实的源码不同. 2. 图片网址附 ...
- python 获取搜狗输入法里面所有的表情图片
首先我们要使用fiddler爬取搜狗输入法表情接口,打开搜狗输入法键盘,里面有个表情,点击进去会进去搜狗的图片表情 ,其中有个输入框,我们要抓取的就是输入对应的文字,找到搜狗所有的管理按图片: 比如我 ...
- python表情包爬虫程序_Python网络爬虫7 - 爬取表情包
为了逗女朋友开心,想找一堆表情包,那么作为一名程序员,自然是会想到用程序来完成这个事情,而Python爬虫就是一个非常好的方法. 我先找到了一个专门发布表情包的网站,就叫做 分析站点 为了不引起不适, ...
- python找最大值的函数_Python 获取最大值函数
Python 获取最大值函数 以下实例中我们使用max()方法求最大值:# -*- coding: UTF-8 -*- # Filename : test.py # 最简单的 print(max(1, ...
- python查看开放的端口_python获取Windows端口信息
# -*- coding: utf8 -*- ''' Windows的netstat显示很不友好 -anO能只能显示pid,没法看到program name -b能看出一些program name, ...
- python调用通达信函数_python获取通达信基本数据源码
1.安装python,执行以下脚本 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh chmod a ...
- python 抓取目录树_python 获取文件下所有文件或目录os.walk()的实例
在python3.6版本中去掉了os.path.walk()函数 os.walk() 函数声明:walk(top,topdown=True,oneerror=None) 1.参数top表示需要遍历的目 ...
- python批处理栅格转点_python获取栅格点和面值的实现
1.获取指定位置的点值: OutputFile = open(statisticResultTXT, 'w') cellvalue=arcpy.GetCellValue_management(inpu ...
- python下载谷歌地图瓦片_python获取bing地图发布自己的TMS服务(一)下载瓦片
部分结果 bing地图瓦片使用QuadKey作为命名方式. QuadKey简介 如何计算quadkey 在给定level下,把行号tileY和列号tileX转换为2进制,然后行列交叉存储,再转换为4进 ...
最新文章
- A-Frame不如x3dom
- .NET中防止Access数据库下载
- POJ2391(最大流Isap+Floyd+二分)
- 电梯里为什么放镜子?90%的人都不知道
- 每人都有两大炸弹的扎金花2012
- win10安装迅雷精简版处理方法---发布者不受信任
- 触控获取坐标判断滑动方向
- .net的数据类型说明
- xshell7,xftp7个人免费版官方下载,无需破解,免激活,下载即可使用
- 【工具用法】Linux登录吉林大学校园网教程(以deepin为例)
- 文献盘点|回眸2021,理一理科研圈探索的那些大发现
- 维特智能陀螺仪角度传感器原理
- 如何将已加好的脚注或尾注转换成中括号“[]”格式
- FITC-TAT-Smad7-HA融合蛋白,荧光素标记TAT-Smad7-HA融合蛋白
- Shell命令提示符
- Excel替换文本内容的3种操作方法比较
- virtualbox给CentOS7虚拟机磁盘扩容
- 飞凌嵌入式丨千兆网之RGMII SGMII解析
- idea注释不顶格(不在行首)
- ios 绘制线框_16款值得一用的iPhone线框图模板 (PSD Sketch)
热门文章
- Arduino Infrared controller
- 武汉大学计算机学院卓越工程师班弘毅学堂,武汉大学弘毅学堂培养方案(2018级试行)...
- MCMC实现——Python安装+Anaconda+PYMC3
- 创新是企业发展的动力源
- 4级网络工程师真题第4套知识点
- android+9切图工具下载,图片分割工具(9Cut)
- 第16步:对话框和片段
- 让生态更有力量 CDEC2020中国数字智能生态大会成都站圆满收官
- 【个人感悟】如何学习计算机知识
- office版本比较