• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python搭建微信公众平台

python 搞代码 4年前 (2022-01-09) 13次浏览 已收录 0个评论

python基于新浪sae开发的微信公众平台,实现功能:

输入段子—回复笑话
输入开源+文章—发送消息到开源中国
输入快递+订单号—查询快递信息
输入天气—查询南京最近五天天气状况
输入微博热点—回复微博当前热门话题
输入电影+名称—回复百度云盘中搜索的链接

具体实现代码:

# -*- coding: utf-8 -*-import hashlibimport webimport lxmlimport timeimport osimport urllib2,jsonimport urllibimport reimport randomimport hashlibimport cookielibfrom urllib import urlencodefrom lxml import etree class WeixinInterface:   def __init__(self):    self.app_root = os.path.dirname(__file__)    self.templates_root = os.path.join(self.app_root, 'templates')    self.render = web.template.render(self.templates_root)        def GET(self):    #获取输入参数    data = web.input()    signature=data.signature    timestamp=data.timestamp    nonce=data.nonce    echostr=data.echostr    #自己的token    token="weixin9047" #这里改写你在微信公众平台里输入的token    #字典序排序    list=[token,timestamp,nonce]    list.sort()    sha1=hashlib.sha1()    map(sha1.update,list)    hashcode=sha1.hexdigest()    #sha1加密算法        #如果是来自微信的请求,则回复echostr    if hashcode == signature:      return echostr             def POST(self):        str_xml = web.data() #获得post来的数据    xml = etree.fromstring(str_xml)#进行XML解析    content=xml.find("Content").text#获得用户所输入的内容    msgType=xml.find("MsgType").text    fromUser=xml.find("FromUserName").text    toUser=xml.find("ToUserName").text    if(content == u"天气"):      url = "http://m.ip138.com/21/nanjing/tianqi/"      headers = {        'Connection': 'Keep-Alive',        'Accept': 'text/html, application/xhtml+xml, */*',        'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',        'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'}      req = urllib2.Request(url, headers = headers)      opener = urllib2.urlopen(req)      html = opener.read()      rex = r'(?)'      rexx = r'(?).{5,15}(?=</div>)'      n = re.findall(rex,html)      m = re.findall(rexx,html)      str_wether = ""      for (i,j) in zip(m,n):        str_wether = str_wether + j + "   " +i + "\n"      return self.render.reply_text(fromUser,toUser,int(time.time()),"最近五天天气:\n"+str_wether)    elif(content[0:2] == u"电影"):      keyword = urllib.quote(content[2:].encode("utf-8"))      url = "http://www.wangpansou.cn/s.php?q="+keyword      headers = {        'Connection': 'Keep-Alive',        'Accept': 'text/html, application/xhtml+xml, */*',        'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',        'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'}      req = urllib2.Request(url, headers = headers)      opener = urllib2.urlopen(req)      html = opener.read()      rex = r'https?://pan.baidu.com.*\?uk=[0-9]{10}.*[\d+?]"'      m = re.findall(rex,html)           string = u""      for i in m:        string = string + i + "\n"      return self.render.reply_text(fromUser,toUser,int(time.time()),u"以下是电影链接:\n"+string)    elif(u"段子" in content):      url_8 = "http://www.qiushibaike.com/"      url_24 = "http://www.qiushibaike.com/hot/"      headers = {        'Connection': 'Keep-Alive',        'Accept': 'text/html, application/xhtml+xml, */*',        'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',        'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'}      req_8 = urllib2.Request(url_8, headers = headers)      req_24 = urllib2.Request(url_24,headers = headers)      opener_8 = urllib2.urlopen(req_8)      opener_24 = urllib2.urlopen(req_24)      html_8 = opener_8.read()      html_24 = opener_24.read()      rex = r'(?).*?(?=<!---ecms )'      m_8 = re.findall(rex,html_8,re.S)      m_24 = re.findall(rex, html_24, re.S)      m_8.extend(m_24)      random.shuffle(m_8)      return self.render.reply_text(fromUser,toUser,int(time.time()),m_8[0].replace('<br />',''))     elif(content[0:2] == u"开源"):      url = "https://www.oschina.net/action/user/hash_login"      urll = "http://www.oschina.net/action/tweet/pub"      username = "[email protected]"      passw = ""      password = hashlib.sha1(passw).hexdigest()      cj = cookielib.CookieJar()      opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))      opener.addheaders = [('User-agent','Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.3.0')]      urllib2.install_opener(opener)      data = {'email':username,'pwd':password}      data_post = urllib.urlencode(data)      opener.open(url, data_post)      user = "2391943"      msg = content[2:].encode("utf-8")      user_code = "lPFz26r3ZIa1e3KyIWlzPNpJlaEmZqyh6dAWAotd"      post = {'user_code':user_code,'user':user,'msg':msg}      msg_post = urllib.urlencode(post)      html = urllib2.urlopen(urll,msg_post).read()      return self.render.reply_text(fromUser,toUser,int(time.time()),u"发送到开源中国动弹成功!")     elif(content[0:2] == u"快递"):      keyword = content[2:]      url = "http://www.kuaidi100.com/autonumber/autoComNum?text="+keyword      cj = cookielib.CookieJar()      opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))      opener.addheaders = [('User-agent','Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.3.0')]      urllib2.install_opener(opener)      html = urllib2.urlop<span>本文来源gaodai#ma#com搞*代#码9网#</span>en(url).read()      jo = json.loads(html)      typ = jo["auto"][0]['comCode']      if(typ is None):        return self.render.reply_text(fromUser,toUser,int(time.time()),u"请检查你的定单号!")       urll = "http://www.kuaidi100.com/query?type="+typ+"&postid="+keyword      html_end = urllib2.urlopen(urll).read()      jo_end = json.loads(html_end)      if(jo_end["status"] == "201"):        return self.render.reply_text(fromUser,toUser,int(time.time()),u"订单号输入有误,请重新输入!")       text = jo_end["data"]      string = u""      for i in text:        string = string + i["time"] + i["context"] + "\n"      return self.render.reply_text(fromUser,toUser,int(time.time()),string)     elif(content == u"微博热点"):      url = "http://weibo.cn/pub/?tf=5_005"      headers = {            'Connection': 'Keep-Alive',            'Accept': 'text/html, application/xhtml+xml, */*',            'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',            'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'}      req = urllib2.Request(url, headers = headers)      opener = urllib2.urlopen(req)      html = opener.read().decode("utf-8")      rex = r'(?)'      ss = re.findall(rex,html)      string = u""      for i in ss:        string = string + i.replace('>','\n')+"\n"      return self.render.reply_text(fromUser,toUser,int(time.time()),string.replace('"',''))    elif(content == u"知乎信息"):      username = '18362983803'      password = ''      _xsrf='558c1b60725377c5810ae2484b26781e'      url = r'https://www.zhihu.com/login/phone_num'      cj = cookielib.CookieJar()      opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))      opener.addheaders = [('User-agent','Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.3.0')]      data = urllib.urlencode({"phone_num":username,"password":password,'_xsrf':_xsrf})      opener.open(url,data)      html = opener.open('https://www.zhihu.com/noti7/new?r=1454793308655').read()      jo = json.loads(html)      data = jo[1]      string = "增长了:"+str(data[0])+"个评论"+str(data[1])+"个粉丝"+str(data[2])+"个赞同"      return self.render.reply_text(fromUser,toUser,int(time.time()),string)    elif(u"钟志远" in content):      return self.render.reply_text(fromUser,toUser,int(time.time()),u"你想找全世界最帅的人干嘛?如果你是妹子,请加微信18362983803!汉子绕道!")    elif(u"使用" in content):      return self.render.reply_text(fromUser,toUser,int(time.time()),u"搜电影:电影+电影名,最近天气:天气,微博热门:微博热点,快递查询:快递+单号,看笑话:段子,发送动弹到开源中国:开源+内容")    else:      url = r'http://www.xiaohuangji.com/ajax.php'      cj = cookielib.CookieJar()      opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))      opener.addheaders = [('User-agent','Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.3.0')]      string = urllib.quote(content.encode("utf-8"))      try:        data = urllib.urlencode({"para":string})        html = opener.open(url,data).read()         string = html+"\n----[回复[使用]]"        return self.render.reply_text(fromUser,toUser,int(time.time()),string)      except Exception,ex:        return self.render.reply_text(fromUser,toUser,int(time.time()),u"我不想理你了~") 

以上就是本文的全部内容,希望对大家的学习有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python搭建微信公众平台
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址