python自动发表情包

Python 自动斗图

小老弟,听说你喜欢斗图,来来来,我们来PK一下,谁的图少算谁输!


我一句话来几十张图,就问你怕不怕!

这个怎么实现呢,我们要分三步:

  1. 下载表情包到本地
  2. 设计查询表情包
  3. 自动根据表情包发送表情

下载表情包

有个网站叫斗图啦: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()
 

 

posted @ 2019-05-24 17:24  枫奇丶宛南  阅读(189)  评论(0编辑  收藏  举报