首先我们要使用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 获取搜狗输入法里面所有的表情图片相关推荐

  1. python函数的用法字帖_Python 3 爬虫之批量下载字帖图片

    朋友想下载这62个网页中的字帖图片:http://www.yac8.com/news/11003.html 一.要点 1. Chrome 「审查元素」中看到的源代码与真实的源码不同. 2. 图片网址附 ...

  2. python 获取搜狗输入法里面所有的表情图片

    首先我们要使用fiddler爬取搜狗输入法表情接口,打开搜狗输入法键盘,里面有个表情,点击进去会进去搜狗的图片表情 ,其中有个输入框,我们要抓取的就是输入对应的文字,找到搜狗所有的管理按图片: 比如我 ...

  3. python表情包爬虫程序_Python网络爬虫7 - 爬取表情包

    为了逗女朋友开心,想找一堆表情包,那么作为一名程序员,自然是会想到用程序来完成这个事情,而Python爬虫就是一个非常好的方法. 我先找到了一个专门发布表情包的网站,就叫做 分析站点 为了不引起不适, ...

  4. python找最大值的函数_Python 获取最大值函数

    Python 获取最大值函数 以下实例中我们使用max()方法求最大值:# -*- coding: UTF-8 -*- # Filename : test.py # 最简单的 print(max(1, ...

  5. python查看开放的端口_python获取Windows端口信息

    # -*- coding: utf8 -*- ''' Windows的netstat显示很不友好 -anO能只能显示pid,没法看到program name -b能看出一些program name, ...

  6. python调用通达信函数_python获取通达信基本数据源码

    1.安装python,执行以下脚本 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh chmod a ...

  7. python 抓取目录树_python 获取文件下所有文件或目录os.walk()的实例

    在python3.6版本中去掉了os.path.walk()函数 os.walk() 函数声明:walk(top,topdown=True,oneerror=None) 1.参数top表示需要遍历的目 ...

  8. python批处理栅格转点_python获取栅格点和面值的实现

    1.获取指定位置的点值: OutputFile = open(statisticResultTXT, 'w') cellvalue=arcpy.GetCellValue_management(inpu ...

  9. python下载谷歌地图瓦片_python获取bing地图发布自己的TMS服务(一)下载瓦片

    部分结果 bing地图瓦片使用QuadKey作为命名方式. QuadKey简介 如何计算quadkey 在给定level下,把行号tileY和列号tileX转换为2进制,然后行列交叉存储,再转换为4进 ...

最新文章

  1. A-Frame不如x3dom
  2. .NET中防止Access数据库下载
  3. POJ2391(最大流Isap+Floyd+二分)
  4. 电梯里为什么放镜子?90%的人都不知道
  5. 每人都有两大炸弹的扎金花2012
  6. win10安装迅雷精简版处理方法---发布者不受信任
  7. 触控获取坐标判断滑动方向
  8. .net的数据类型说明
  9. xshell7,xftp7个人免费版官方下载,无需破解,免激活,下载即可使用
  10. 【工具用法】Linux登录吉林大学校园网教程(以deepin为例)
  11. 文献盘点|回眸2021,理一理科研圈探索的那些大发现
  12. 维特智能陀螺仪角度传感器原理
  13. 如何将已加好的脚注或尾注转换成中括号“[]”格式
  14. FITC-TAT-Smad7-HA融合蛋白,荧光素标记TAT-Smad7-HA融合蛋白
  15. Shell命令提示符
  16. Excel替换文本内容的3种操作方法比较
  17. virtualbox给CentOS7虚拟机磁盘扩容
  18. 飞凌嵌入式丨千兆网之RGMII SGMII解析
  19. idea注释不顶格(不在行首)
  20. ios 绘制线框_16款值得一用的iPhone线框图模板 (PSD Sketch)

热门文章

  1. Arduino Infrared controller
  2. 武汉大学计算机学院卓越工程师班弘毅学堂,武汉大学弘毅学堂培养方案(2018级试行)...
  3. MCMC实现——Python安装+Anaconda+PYMC3
  4. 创新是企业发展的动力源
  5. 4级网络工程师真题第4套知识点
  6. android+9切图工具下载,图片分割工具(9Cut)
  7. 第16步:对话框和片段
  8. 让生态更有力量 CDEC2020中国数字智能生态大会成都站圆满收官
  9. 【个人感悟】如何学习计算机知识
  10. office版本比较