python自动发表情包
Python 自动斗图
小老弟,听说你喜欢斗图,来来来,我们来PK一下,谁的图少算谁输!
我一句话来几十张图,就问你怕不怕!
这个怎么实现呢,我们要分三步:
- 下载表情包到本地
- 设计查询表情包
- 自动根据表情包发送表情
下载表情包
有个网站叫斗图啦:http://www.doutula.com
里面的表情挺多的2000多页、一万多个表情图片,足够你使用了
简单的看了一下这个网页,构成比较单,所以用request,urllib什么方法都行,很简单的就能把这些表情包下载下来
这里直接上代码吧:
import requests
import re
import urllib.request
import threading
def Downloader(step):
#定义目标网站url
baseurl='http://www.doutula.com/photo/list/?page='
# #编写模拟浏览器获取
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
'Accept':'text/html;q=0.9,*/*;q=0.8',
'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Accept-Encoding':'gzip',
'Connection':'close',
'Referer':None #注意如果依然不能抓取的话,这里可以设置抓取网站的host
}
#遍历获得目标网站的每一页
a= step*50
b= step*50+50
for i in range(a,b):
urls=baseurl+str(i)
print(urls)
#用Request的get请求获取网页代码
r = requests.get(urls,headers=headers)
html=r.text
# #用正则匹配获取图片链接
zz=re.compile(r'data-original="(.*?)".*?alt="(.*?)"',re.S)
img=re.findall(zz,html)
#遍历得到图片名字和url
for a in img:
#设置保存路径
imgname=a[1]
imgname=re.sub('\/|\\\\|《|》|。|?|!|\.|\?|!|\*|&|#|(|)|(|)|(|)','',imgname)
imgtype=a[0].split('.')[-1]
path=('斗图啦/%s.%s'%(imgname,imgtype))
print(path,a[0])
#用urllib库来进行保存
urllib.request.urlretrieve(a[0],path)
t_obj = []
for i in range(10):
t = threading.Thread(target=Downloader, args=(i,))
t.start()
t_obj.append(t)
for t in t_obj:
t.join()
这里用了一下多线程,下载前面500页,时间可能比较长一点
关键字匹配
这一步可以使用标准库glob,然后再加上简单的正则匹配,就能够检索本地表情的内容了
import glob
for name in glob.glob('./Emotion/*你很*.*'):
print(name)
结果
./Emotion/崽阿爸对你很失望.jpg
./Emotion/这么,你很勇哦.jpg
./Emotion/你很骚啊,小老弟.jpg
./Emotion/我懂你帅,你很帅那你怎么不去做鸭.jpg
./Emotion/我看你很急,需拿去给自己火化一下吧.jpg
./Emotion/你很丑.gif
./Emotion/你很棒棒哦.jpg
./Emotion/那你很勇哦.jpg
./Emotion/拜托,你很弱哎.jpg
./Emotion/听说你很社会.jpg
自动斗图
通过微信口就能够实现自动斗图了,微信接口可以选择itchat或者wxpy
import itchat
import glob,os
itchat.auto_login(hotReload=True)
itchat.run()
current_path=os.getcwd()
imgs=[]
def searchImg(keywords):
print('keywords: %s' % keywords)
for name in glob.glob(current_path+'/Emotion/*'+keywords+'*.*'):
imgs.append(name)
@itchat.msg_register(['PICTURE', 'TEXT'])
def text_reply(msg):
searchImg(msg.text)
for img in imgs[:3]:
msg.user.send_image(img)
time.sleep(0.4)
print('开始发送表情:', img)
imgs.clear()