微信保存图片不在相册公众号你好店主不在请输入买推订怎么取消

PYTHON爬虫之旅系列教程之【利用Python开发微信公众平台&三&】a year ago可以看到,用了正则表达式匹配。关于爬虫需要的正则表达式,我认为仅仅学会 . * ? 贪婪 非贪婪模式这五种概念暂时就可以了。括号内就是匹配的内容,结果是以列表内含元组的形式。每个元组有四个元素。分别为豆瓣的电影url链接,电影宣传图片,电影标题,电影评分。0.1.2 如何爬取相应电影的票房这里票房数据,我们选用的是。值得注意的是,这个网站获取的实时票房是以json格式发送的,这种方式对于抓取而言,非常的方便。具体怎么看出来的,浏览器F12,Network调试,发现json网址采用的是(+时间戳),了解到了这个,那么我们就可以通过piaofang_url = 'http://www.cbooo.cn/boxOffice/GetHourBoxOffice?d=%s'%str(time.time()).split('.')[0]
获取最新票房信息。代码为:import json
import requests
import time
piaofang_url = 'http://www.cbooo.cn/boxOffice/GetHourBoxOffice?d=%s'%str(time.time()).split('.')[0]
piaofang_json = requests.get(piaofang_url).text
PIAOFANG = json.loads(piaofang_json)['data2']
PIAOFANGS = []
for piaofang in PIAOFANG:
PIAOFANGS.append((piaofang['MovieName'], float(piaofang['sumBoxOffice'])))
PIAOFANGS = sorted(PIAOFANGS, key=lambda x: x[1], reverse=True)
代码简单解释一下,PIAOFANGS这个列表内元组是以电影名称和实时票房数据组成。最后一行是按照当前票房从大到小排序。我们的需求是:多图文的时候,按照票房顺序显示电影的名称,当前票房,电影宣传图片,电影豆瓣URL链接,豆瓣评分这五部分组成。所以,需要将豆瓣爬取的结果和CBO中国票房爬取结果进行组装。代码为:INFOS = []
for piao in PIAOFANGS:
piaofang_name = piao[0]
for douban in DOUBAN:
douban = list(douban)
##元组不可修改,将元组转化为列表。
douban_name = douban[2]
if piaofang_name == douban_name:
douban.append(str("%.3f"%(piao[1]/10000.0)))#加入票房,保留三位小数
INFOS.append(douban)
所获取的INFOS列表就是我们所需要的数据啦~0.1.3 如何实现多图文的发布这个多图文的发布,甚是有趣,有两种选择方式。较繁琐的形式。比如我想发布一条消息发布三条图文,可以写作:$def with (toUser,fromUser,title1,picurl1,url1,title2,picurl2,url2,title3,picurl3,url3,title4,picurl4,url4)
&ToUserName&&![CDATA[$toUser]]&&/ToUserName&
&FromUserName&&![CDATA[$fromUser]]&&/FromUserName&
&CreateTime&&/CreateTime&
&MsgType&&![CDATA[news]]&&/MsgType&
&ArticleCount&4&/ArticleCount&
&Articles&
&Title&&![CDATA[$title1]]&&/Title&
&PicUrl&&![CDATA[$picurl1]]&&/PicUrl&
&Url&&![CDATA[$url1]]&&/Url&
&Title&&![CDATA[$title2]]&&/Title&
&PicUrl&&![CDATA[$picurl2]]&&/PicUrl&
&Url&&![CDATA[$url2]]&&/Url&
&Title&&![CDATA[$title3]]&&/Title&
&PicUrl&&![CDATA[$picurl3]]&&/PicUrl&
&Url&&![CDATA[$url3]]&&/Url&
&Title&&![CDATA[$title4]]&&/Title&
&PicUrl&&![CDATA[$picurl4]]&&/PicUrl&
&Url&&![CDATA[$url4]]&&/Url&
&/Articles&
但是,聪明的你,肯定能想到,这种不但很繁琐,而且可扩展性太差,万一我要一条消息发布四条图文呢,岂不是又要新建一个模板啊!自然而然,我们会想到用循环啊?!(╯' - ')╯︵ ┻━┻ 所以下面这种方法是首选。简便的循环形式。在templates文件夹下新建reply_morepic.xml直接上代码。$def with (toUser,fromUser,dyxx,num)
&ToUserName&&![CDATA[$toUser]]&&/ToUserName&
&FromUserName&&![CDATA[$fromUser]]&&/FromUserName&
&CreateTime&&/CreateTime&
&MsgType&&![CDATA[news]]&&/MsgType&
&ArticleCount&$num&/ArticleCount&
&Articles&
$for m in range(num):
&Title&$dyxx[m][2]
(豆瓣:$dyxx[m][3] 票房:$dyxx[m][4]亿)&/Title&
&Description&&![CDATA[$dyxx[m][2]]]&&/Description&
&PicUrl&&![CDATA[$dyxx[m][1]]]&&/PicUrl&
&Url&&![CDATA[$dyxx[m][0]]]&&/Url&
&/Articles&
读懂上面的代码,需要了解web.py的一些语法结构。比如如果是变量或者循环,选择等程序语句前面需要加$等。我只需要给这个模板传入四个参数toUser,fromUser,dyxx,num就行了,其中dyxx就是INFOS,num就是需要发布图文的数量。因为微信多图文消息最多只能有10条图文,要限制num不能超过10。于是,我们为weixinInterface.py后面要加上:total_num = len(INFOS)
if total_num&10:
num = total_num
return self.render.reply_morepic(fromUser,toUser,INFOS,num)
完成之后,就可以到公众号里面看到效果啦,是不是非常有成就感呀~想要体验真实的图文效果,关注微信公众号【一只IT汪】,回复关键字“电影”查看,是不是蛮炫酷哒?!0.2 源码展示weixinInterface.py源码# -*- coding: utf-8 -*-
import hashlib
import web
import lxml
import time
import json
import urllib,urllib2
from lxml import etree
import requests
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="你的token" #这里改写你在微信公众平台里输入的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解析
mstype = xml.find("MsgType").text
fromUser = xml.find("FromUserName").text
toUser = xml.find("ToUserName").text
if mstype == "event":
mscontent = xml.find("Event").text
if mscontent == "subscribe":
replayText = u'''你好,这是我的小窝,以后这里将不定期更新各类干货,欢迎关注哟。'''
return self.render.reply_text(fromUser,toUser,int(time.time()),replayText)
if mstype == 'text':
content = xml.find("Content").text#获得用户所输入的内容
if content == u"电台" or content == "fm" or content == "Fm" or content == "FM":
url = 'http://m.xinli001.com/fm/'
fmre = urllib.urlopen(url).read()
pa1 = re.compile(r'&head&.*?&title&(.*?)-心理FM&/title&',re.S)
ts1 = re.findall(pa1,fmre)
pa3 = re.compile(r'var broadcast_url = "(.*?)", broadcastListUrl = "/fm/items/',re.S)
ts3 = re.findall(pa3,fmre)
req = urllib2.Request(ts3[0])
response = urllib2.urlopen(req)
redirectUrl = response.geturl()
musicTitle = ts1[0]
musicDes =
musicURL = redirectUrl
HQURL = 'http://m.xinli001.com/fm/'
return self.render.reply_sound(fromUser,toUser,musicTitle,musicDes,musicURL,HQURL)
elif content == u'知友':
title1 = '知友们,中秋快乐!'
description1 = '给知友的祝福。'
xc = 'http://viewer.maka.im/k/J64391B8'
pic = 'http://pic33.nipic.com/.jpg'
return self.render.reply_pic(fromUser,toUser,title1,description1,pic,xc)
elif content == u'电影':
douban_url = 'https://movie.douban.com/'
douban_html = requests.get(douban_url).text
c = re.compile(r' &a onclick="moreurl.*?href="(.*?)"[\s\S]*?src="(.*?)" alt="(.*?)" [\s\S]*?class="subject-rate"&(.*?)&/span&', re.S)
DOUBAN = re.findall(c, douban_html)
piaofang_url = 'http://www.cbooo.cn/boxOffice/GetHourBoxOffice?d=%s'%str(time.time()).split('.')[0]
piaofang_json = requests.get(piaofang_url).text
PIAOFANG = json.loads(piaofang_json)['data2']
PIAOFANGS = []
for piaofang in PIAOFANG:
PIAOFANGS.append((piaofang['MovieName'], float(piaofang['sumBoxOffice'])))
PIAOFANGS = sorted(PIAOFANGS, key=lambda x: x[1], reverse=True)
INFOS = []
for piao in PIAOFANGS:
piaofang_name = piao[0]
for douban in DOUBAN:
douban = list(douban)
douban_name = douban[2]
if piaofang_name == douban_name:
douban.append(str("%.3f"%(piao[1]/10000.0)))
INFOS.append(douban)
total_num = len(INFOS)
if total_num&10:
num = total_num
return self.render.reply_morepic(fromUser,toUser,INFOS,num)
key = '图灵机器人的key'
api = 'http://www.tuling123.com/openapi/api?key=' + key + '&info='
info = content.encode('UTF-8')
url = api + info
page = urllib.urlopen(url)
html = page.read()
dic_json = json.loads(html)
reply_content = dic_json['text']
return self.render.reply_text(fromUser,toUser,int(time.time()),reply_content)
reply_morepic.xml源码:$def with (toUser,fromUser,dyxx,num)
&ToUserName&&![CDATA[$toUser]]&&/ToUserName&
&FromUserName&&![CDATA[$fromUser]]&&/FromUserName&
&CreateTime&&/CreateTime&
&MsgType&&![CDATA[news]]&&/MsgType&
&ArticleCount&$num&/ArticleCount&
&Articles&
$for m in range(num):
&Title&$dyxx[m][2]
(豆瓣:$dyxx[m][3] 票房:$dyxx[m][4]亿)&/Title&
&Description&&![CDATA[$dyxx[m][2]]]&&/Description&
&PicUrl&&![CDATA[$dyxx[m][1]]]&&/PicUrl&
&Url&&![CDATA[$dyxx[m][0]]]&&/Url&
&/Articles&
0.3 尾记本节课主要在讲如何实现多图文消息的发布。涉及到较多的爬虫知识。通过本节你应该掌握:requests库的应用。json格式的解析。对实现某一功能的步骤思考。web.py模板的简单编写。多图文发布的步骤及技巧。下一讲将是本专题的最后一讲:利用Python开发微信公众平台&四&:怎么用SAE,并结合MySQL做简单的网页,并在微信平台上展示。可以的话,加微信公众号:【一只IT汪】。公众号刚开通,暂时没有多少内容,但以后会有更多惊喜哟~ 公众号回复您的暂时是微信机器人,别被微信机器人调戏了哈~本系列教程将不定期更新,敬请关注 :)如果喜欢,请一定记得点赞哟~ 你的赞就是我更新的动力~ o(*≧▽≦)ツ赞赏6 人赞赏127收藏分享举报文章被以下专栏收录用python来做一些有趣的事~{&debug&:false,&apiRoot&:&&,&paySDK&:&https:\u002F\u002Fpay.zhihu.com\u002Fapi\u002Fjs&,&wechatConfigAPI&:&\u002Fapi\u002Fwechat\u002Fjssdkconfig&,&name&:&production&,&instance&:&column&,&tokens&:{&X-XSRF-TOKEN&:null,&X-UDID&:null,&Authorization&:&oauth c3cef7c66aa9e6a1e3160e20&}}{&database&:{&Post&:{&&:{&isPending&:false,&contributes&:[{&sourceColumn&:{&lastUpdated&:,&description&:&&,&permission&:&COLUMN_PUBLIC&,&memberId&:948395,&contributePermission&:&COLUMN_PUBLIC&,&translatedCommentPermission&:&all&,&canManage&:true,&intro&:&用python来做一些有趣的事~&,&urlToken&:&python-excavator&,&id&:20015,&imagePath&:&v2-4c1b915bc7fb9e575d809cd549b0a531.jpg&,&slug&:&python-excavator&,&applyReason&:&0&,&name&:&PYTHON挖掘机&,&title&:&PYTHON挖掘机&,&url&:&https:\u002F\u002Fzhuanlan.zhihu.com\u002Fpython-excavator&,&commentPermission&:&COLUMN_ALL_CAN_COMMENT&,&canPost&:true,&created&:,&state&:&COLUMN_NORMAL&,&followers&:5533,&avatar&:{&id&:&v2-4c1b915bc7fb9e575d809cd549b0a531&,&template&:&https:\u002F\u002Fpic3.zhimg.com\u002F{id}_{size}.jpg&},&activateAuthorRequested&:false,&following&:false,&imageUrl&:&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-4c1b915bc7fb9e575d809cd549b0a531_l.jpg&,&articlesCount&:15},&state&:&accepted&,&targetPost&:{&titleImage&:&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-ab34cb7b583a_r.jpg&,&lastUpdated&:,&imagePath&:&v2-ab34cb7b583a.jpeg&,&permission&:&ARTICLE_PUBLIC&,&topics&:[,872],&summary&:&大家好,我又来啦~题外话,我的知乎专栏:\u003Ca href=\&https:\u002F\u002Fzhuanlan.zhihu.com\u002Fpython-excavator\& class=\&\& data-editable=\&true\& data-title=\&PYTHON挖掘机\&\u003EPYTHON挖掘机\u003C\u002Fa\u003E已经开通,大家可以关注下,以方便文章的及时提醒与查看。 本系列课程讲述“\u003Cb\u003EPYTHON爬虫之旅\u003C\u002Fb\u003E”,具体大纲可参考:\u003Ca href=\&https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F\& class=\&\& data-editable=\&true\& data-title=\&【PYTHON爬虫之旅】概要目录\&\u003E【PYTHON爬虫之旅】概要目录\u003C\u002Fa\u003E。\u003Ca href=\&https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F\& class=\&\& data-editable=\&true\& data-title=\&【PYTHON爬虫之旅】利用Python开发微信公众号&一&\&\u003E【PYTHON爬虫之旅】利用Python开发微信公众号&一&\u003C\u002Fa\u003E\u003Ca href=\&https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F\& data-title=\&【PYTHON爬虫之旅】利用Python开发微信公众号&二&\& class=\&\& data-editable=\&true\&\u003E【PYTHON…\u003C\u002Fa\u003E&,&copyPermission&:&ARTICLE_COPYABLE&,&translatedCommentPermission&:&all&,&likes&:0,&origAuthorId&:0,&publishedTime&:&T11:18:28+08:00&,&sourceUrl&:&&,&urlToken&:,&id&:1182822,&withContent&:false,&slug&:,&bigTitleImage&:false,&title&:&PYTHON爬虫之旅系列教程之【利用Python开发微信公众平台\u003C三\u003E】&,&url&:&\u002Fp\u002F&,&commentPermission&:&ARTICLE_ALL_CAN_COMMENT&,&snapshotUrl&:&&,&created&:,&comments&:0,&columnId&:20015,&content&:&&,&parentId&:0,&state&:&ARTICLE_PUBLISHED&,&imageUrl&:&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-ab34cb7b583a_r.jpg&,&author&:{&bio&:&会写点代码而已&,&isFollowing&:false,&hash&:&9ad601aaeccdde47eaf50d5&,&uid&:80,&isOrg&:false,&slug&:&handashu&,&isFollowed&:false,&description&:&为学日益,为道日损\n微信公众号:一只IT汪&,&name&:&蚍蜉撼大树&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fhandashu&,&avatar&:{&id&:&v2-7bdf1ef95f774dc7b937caad10c59adb&,&template&:&https:\u002F\u002Fpic3.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&memberId&:948395,&excerptTitle&:&&,&voteType&:&ARTICLE_VOTE_CLEAR&},&id&:434951}],&title&:&PYTHON爬虫之旅系列教程之【利用Python开发微信公众平台\u003C三\u003E】&,&author&:&handashu&,&content&:&\u003Cp\u003E大家好,我又来啦~\u003C\u002Fp\u003E\u003Cp\u003E题外话,我的知乎专栏:\u003Ca href=\&https:\u002F\u002Fzhuanlan.zhihu.com\u002Fpython-excavator\& class=\&internal\&\u003EPYTHON挖掘机\u003C\u002Fa\u003E已经开通,大家可以关注下,以方便文章的及时提醒与查看。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E本系列课程讲述“\u003Cb\u003EPYTHON爬虫之旅\u003C\u002Fb\u003E”,具体大纲可参考:\u003C\u002Fp\u003E\u003Cp\u003E\u003Ca href=\&https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F\& class=\&internal\&\u003E【PYTHON爬虫之旅】概要目录\u003C\u002Fa\u003E。\u003C\u002Fp\u003E\u003Cp\u003E\u003Ca href=\&https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F\& class=\&internal\&\u003E【PYTHON爬虫之旅】利用Python开发微信公众号&一&\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ca href=\&https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F\& class=\&internal\&\u003E【PYTHON爬虫之旅】利用Python开发微信公众号&二&\u003C\u002Fa\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E0.0 本讲知识概要\u003C\u002Fb\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E如何导入SAE中没有的库。\u003C\u002Fli\u003E\u003Cli\u003E如何爬取豆瓣的电影标题及链接\u003C\u002Fli\u003E\u003Cli\u003E如何爬取对应电影的票房。\u003C\u002Fli\u003E\u003Cli\u003E如何实现多图文的发布。\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E\u003Cb\u003E0.1 正文\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E0.1.0 如何导入SAE没有的库\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003ESAE本身存在Python自带的一些库文件。但是,我们使用过程中,难免会使用其他的库,比如经典的requests,beautifulsoup等库。作为示例,我讲述一下怎么导入requests这个库。\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E下载requests的安装包:\u003Ca href=\&http:\u002F\u002Flink.zhihu.com\u002F?target=https%3A\u002F\u002Fpypi.python.org\u002Fpypi\u002Frequests\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003Erequests 2.11.1\u003C\u002Fa\u003E。\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cbr\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-6352ccdf34a017bf9a27cc_b.jpg\& data-rawwidth=\&305\& data-rawheight=\&35\& class=\&content_image\& width=\&305\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='305'%20height='35'&&\u002Fsvg&\& data-rawwidth=\&305\& data-rawheight=\&35\& class=\&content_image lazy\& width=\&305\& data-actualsrc=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-6352ccdf34a017bf9a27cc_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cul\u003E\u003Cli\u003E解压,并打开解压后的文件夹,里面会有个requests的文件夹,这就是我们所需要的requests。将这个文件压缩,点击SAE的上传代码包,将该压缩包上传。\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cbr\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-edcdc7a3be8d57_b.jpg\& data-rawwidth=\&395\& data-rawheight=\&87\& class=\&content_image\& width=\&395\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='395'%20height='87'&&\u002Fsvg&\& data-rawwidth=\&395\& data-rawheight=\&87\& class=\&content_image lazy\& width=\&395\& data-actualsrc=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-edcdc7a3be8d57_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cul\u003E\u003Cli\u003E上传完成后SAE会显示,\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cbr\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-d27edff283eda7d58dd8b0a05a9dcc1b_b.jpg\& data-rawwidth=\&229\& data-rawheight=\&99\& class=\&content_image\& width=\&229\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='229'%20height='99'&&\u002Fsvg&\& data-rawwidth=\&229\& data-rawheight=\&99\& class=\&content_image lazy\& width=\&229\& data-actualsrc=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-d27edff283eda7d58dd8b0a05a9dcc1b_b.jpg\&\u003E\u003C\u002Ffigure\u003E如上,已经成功导入了requests库。\u003Cp\u003E下面,我们想实现这样一个功能,通过输入关键词“\u003Cb\u003E电影\u003C\u002Fb\u003E”,公众号能返回如下图的结果:\u003C\u002Fp\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-1dcbbfbecfaa_b.jpg\& data-rawwidth=\&369\& data-rawheight=\&531\& class=\&content_image\& width=\&369\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='369'%20height='531'&&\u002Fsvg&\& data-rawwidth=\&369\& data-rawheight=\&531\& class=\&content_image lazy\& width=\&369\& data-actualsrc=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-1dcbbfbecfaa_b.jpg\&\u003E\u003C\u002Ffigure\u003E可以看到,图文消息是以电影票房排序的。为实现这一简单功能,我们至少需要以下步骤:\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E爬取豆瓣电影信息。包含电影名称,电影评分,豆瓣该电影url以及该电影的宣传图。\u003C\u002Fli\u003E\u003Cli\u003E爬取能显示电影当前票房的网站,获取票房纪录。\u003C\u002Fli\u003E\u003Cli\u003E对票房纪录进行从大到小排序。\u003C\u002Fli\u003E\u003Cli\u003E将两个站点的信息一一对应并重新组装,得到我们想要的结果。\u003C\u002Fli\u003E\u003Cli\u003E新建多图文模板,返回正确结果。\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cbr\u003E\u003Cp\u003E\u003Cb\u003E0.1.1 如何爬取豆瓣的电影标题及链接\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E爬取正在上映的电影信息,代码只有四行:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-python\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Erequests\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Ere\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003Edouban_url\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'https:\u002F\u002Fmovie.douban.com\u002F'\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003Edouban_html\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Erequests\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eget\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Edouban_url\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etext\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003Ec\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ere\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ecompile\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003Er'&a onclick=\&moreurl.*?href=\&(.*?)\&[\\s\\S]*?src=\&(.*?)\& alt=\&(.*?)\& [\\s\\S]*?class=\&subject-rate\&&(.*?)&\u002Fspan&'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ere\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003ES\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003EDOUBAN\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ere\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Efindall\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ec\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Edouban_html\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E可以看到,用了正则表达式匹配。关于爬虫需要的正则表达式,我认为仅仅学会 . * ? 贪婪 非贪婪模式这五种概念暂时就可以了。\u003C\u002Fp\u003E\u003Cp\u003E括号内就是匹配的内容,结果是以列表内含元组的形式。每个元组有四个元素。分别为豆瓣的电影url链接,电影宣传图片,电影标题,电影评分。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E0.1.2 \u003C\u002Fb\u003E\u003Cb\u003E如何爬取相应电影的票房\u003C\u002Fb\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E这里票房数据,我们选用的是\u003Ca href=\&http:\u002F\u002Flink.zhihu.com\u002F?target=http%3A\u002F\u002Fwww.cbooo.cn\u002Frealtime\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003ECBO中国票房\u003C\u002Fa\u003E。值得注意的是,这个网站获取的实时票房是以json格式发送的,这种方式对于抓取而言,非常的方便。具体怎么看出来的,浏览器F12,Network调试,发现json网址采用的是\u003Ca href=\&http:\u002F\u002Flink.zhihu.com\u002F?target=http%3A\u002F\u002Fwww.cbooo.cn\u002FboxOffice\u002FGetHourBoxOffice%3Fd%3D\& class=\& external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E\u003Cspan class=\&invisible\&\u003Ehttp:\u002F\u002Fwww.\u003C\u002Fspan\u003E\u003Cspan class=\&visible\&\u003Ecbooo.cn\u002FboxOffice\u002FGetH\u003C\u002Fspan\u003E\u003Cspan class=\&invisible\&\u003EourBoxOffice?d=\u003C\u002Fspan\u003E\u003Cspan class=\&ellipsis\&\u003E\u003C\u002Fspan\u003E\u003C\u002Fa\u003E(+时间戳),了解到了这个,那么我们就可以通过\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-python\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epiaofang_url\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'http:\u002F\u002Fwww.cbooo.cn\u002FboxOffice\u002FGetHourBoxOffice?d=\u003C\u002Fspan\u003E\u003Cspan class=\&si\&\u003E%s\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E%\u003C\u002Fspan\u003E\u003Cspan class=\&nb\&\u003Estr\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etime\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etime\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E())\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Esplit\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'.'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)[\u003C\u002Fspan\u003E\u003Cspan class=\&mi\&\u003E0\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E获取最新票房信息。代码为:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-python\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Ejson\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Erequests\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Etime\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003Epiaofang_url\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'http:\u002F\u002Fwww.cbooo.cn\u002FboxOffice\u002FGetHourBoxOffice?d=\u003C\u002Fspan\u003E\u003Cspan class=\&si\&\u003E%s\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E%\u003C\u002Fspan\u003E\u003Cspan class=\&nb\&\u003Estr\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etime\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etime\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E())\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Esplit\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'.'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)[\u003C\u002Fspan\u003E\u003Cspan class=\&mi\&\u003E0\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003Epiaofang_json\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Erequests\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eget\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epiaofang_url\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etext\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003EPIAOFANG\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ejson\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eloads\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epiaofang_json\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)[\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'data2'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003EPIAOFANGS\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&p\&\u003E[]\u003C\u002Fspan\u003E\n\u003Cspan class=\&k\&\u003Efor\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Epiaofang\u003C\u002Fspan\u003E \u003Cspan class=\&ow\&\u003Ein\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003EPIAOFANG\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003EPIAOFANGS\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eappend\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E((\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epiaofang\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'MovieName'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E],\u003C\u002Fspan\u003E \u003Cspan class=\&nb\&\u003Efloat\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epiaofang\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'sumBoxOffice'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E])))\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003EPIAOFANGS\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&nb\&\u003Esorted\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EPIAOFANGS\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ekey\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&k\&\u003Elambda\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ex\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ex\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&mi\&\u003E1\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E],\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ereverse\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&bp\&\u003ETrue\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E代码简单解释一下,PIAOFANGS这个列表内元组是以电影名称和实时票房数据组成。最后一行是按照当前票房从大到小排序。\u003C\u002Fp\u003E\u003Cp\u003E我们的需求是:多图文的时候,按照票房顺序显示电影的名称,当前票房,电影宣传图片,电影豆瓣URL链接,豆瓣评分这五部分组成。所以,需要将豆瓣爬取的结果和CBO中国票房爬取结果进行组装。代码为:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-python\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EINFOS\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&p\&\u003E[]\u003C\u002Fspan\u003E\n\u003Cspan class=\&k\&\u003Efor\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Epiao\u003C\u002Fspan\u003E \u003Cspan class=\&ow\&\u003Ein\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003EPIAOFANGS\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Epiaofang_name\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Epiao\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&mi\&\u003E0\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Efor\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Edouban\u003C\u002Fspan\u003E \u003Cspan class=\&ow\&\u003Ein\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003EDOUBAN\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Edouban\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&nb\&\u003Elist\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Edouban\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E \n\u003Cspan class=\&c1\&\u003E##元组不可修改,将元组转化为列表。\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Edouban_name\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Edouban\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&mi\&\u003E2\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eif\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Epiaofang_name\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E==\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Edouban_name\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Edouban\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eappend\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&nb\&\u003Estr\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&\u003C\u002Fspan\u003E\u003Cspan class=\&si\&\u003E%.3f\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E%\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epiao\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&mi\&\u003E1\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E\u002F\u003C\u002Fspan\u003E\u003Cspan class=\&mf\&\u003E3C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)))\u003C\u002Fspan\u003E\u003Cspan class=\&c1\&\u003E#加入票房,保留三位小数\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003EINFOS\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eappend\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Edouban\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Ebreak\u003C\u002Fspan\u003E\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E所获取的INFOS列表就是我们所需要的数据啦~\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cp\u003E\u003Cb\u003E0.1.3 如何实现多图文的发布\u003C\u002Fb\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E这个多图文的发布,甚是有趣,有两种选择方式。\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E较繁琐的形式。比如我想发布一条消息发布三条图文,可以写作:\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cbr\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-xml\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E$def with (toUser,fromUser,title1,picurl1,url1,title2,picurl2,url2,title3,picurl3,url3,title4,picurl4,url4)\n\u003Cspan class=\&nt\&\u003E&xml&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&ToUserName&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$toUser]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FToUserName&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&FromUserName&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$fromUser]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FFromUserName&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&CreateTime&\u003C\u002Fspan\u003E3Cspan class=\&nt\&\u003E&\u002FCreateTime&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&MsgType&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[news]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FMsgType&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&ArticleCount&\u003C\u002Fspan\u003E4\u003Cspan class=\&nt\&\u003E&\u002FArticleCount&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&Articles&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&item&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&Title&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$title1]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FTitle&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&PicUrl&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$picurl1]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FPicUrl&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&Url&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$url1]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FUrl&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&\u002Fitem&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&item&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&Title&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$title2]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FTitle&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&PicUrl&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$picurl2]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FPicUrl&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&Url&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$url2]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FUrl&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&\u002Fitem&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&item&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&Title&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$title3]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FTitle&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&PicUrl&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$picurl3]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FPicUrl&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&Url&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$url3]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FUrl&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&\u002Fitem&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&item&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&Title&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$title4]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FTitle&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&PicUrl&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$picurl4]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FPicUrl&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&Url&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$url4]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FUrl&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&\u002Fitem&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&\u002FArticles&\u003C\u002Fspan\u003E\n\u003Cspan class=\&nt\&\u003E&\u002Fxml&\u003C\u002Fspan\u003E\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E但是,聪明的你,肯定能想到,这种不但很繁琐,而且可扩展性太差,万一我要一条消息发布四条图文呢,岂不是又要新建一个模板啊!自然而然,我们会想到用循环啊?!(╯' - ')╯︵ ┻━┻ 所以下面这种方法是首选。\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E简便的循环形式。在templates文件夹下新建reply_morepic.xml直接上代码。\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cbr\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-xml\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E$def with (toUser,fromUser,dyxx,num)\n
\u003Cspan class=\&nt\&\u003E&xml&\u003C\u002Fspan\u003E\n
\u003Cspan class=\&nt\&\u003E&ToUserName&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$toUser]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FToUserName&\u003C\u002Fspan\u003E\n
\u003Cspan class=\&nt\&\u003E&FromUserName&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$fromUser]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FFromUserName&\u003C\u002Fspan\u003E\n
\u003Cspan class=\&nt\&\u003E&CreateTime&\u003C\u002Fspan\u003E3Cspan class=\&nt\&\u003E&\u002FCreateTime&\u003C\u002Fspan\u003E\n
\u003Cspan class=\&nt\&\u003E&MsgType&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[news]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FMsgType&\u003C\u002Fspan\u003E\n
\u003Cspan class=\&nt\&\u003E&ArticleCount&\u003C\u002Fspan\u003E$num\u003Cspan class=\&nt\&\u003E&\u002FArticleCount&\u003C\u002Fspan\u003E\n
\u003Cspan class=\&nt\&\u003E&Articles&\u003C\u002Fspan\u003E\n\t$for m in range(num):
\u003Cspan class=\&nt\&\u003E&item&\u003C\u002Fspan\u003E\n
\u003Cspan class=\&nt\&\u003E&Title&\u003C\u002Fspan\u003E$dyxx[m][2]\n
(豆瓣:$dyxx[m][3] 票房:$dyxx[m][4]亿)\u003Cspan class=\&nt\&\u003E&\u002FTitle&\u003C\u002Fspan\u003E\n
\u003Cspan class=\&nt\&\u003E&Description&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$dyxx[m][2]]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FDescription&\u003C\u002Fspan\u003E\n
\u003Cspan class=\&nt\&\u003E&PicUrl&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$dyxx[m][1]]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FPicUrl&\u003C\u002Fspan\u003E\n
\u003Cspan class=\&nt\&\u003E&Url&\u003C\u002Fspan\u003E\u003Cspan class=\&cp\&\u003E&![CDATA[$dyxx[m][0]]]&\u003C\u002Fspan\u003E\u003Cspan class=\&nt\&\u003E&\u002FUrl&\u003C\u002Fspan\u003E\n
\u003Cspan class=\&nt\&\u003E&\u002Fitem&\u003C\u002Fspan\u003E\n
\u003Cspan class=\&nt\&\u003E&\u002FArticles&\u003C\u002Fspan\u003E\t\n
\u003Cspan class=\&nt\&\u003E&\u002Fxml&\u003C\u002Fspan\u003E\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E读懂上面的代码,需要了解web.py的一些语法结构。比如如果是变量或者循环,选择等程序语句前面需要加$等。我只需要给这个模板传入四个参数toUser,fromUser,dyxx,num就行了,其中dyxx就是INFOS,num就是需要发布图文的数量。因为微信多图文消息最多只能有10条图文,要限制num不能超过10。于是,我们为weixinInterface.py后面要加上:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-python\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etotal_num\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&nb\&\u003Elen\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EINFOS\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n\u003Cspan class=\&k\&\u003Eif\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Etotal_num\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E&\u003C\u002Fspan\u003E\u003Cspan class=\&mi\&\u003E10\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Enum\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&mi\&\u003E10\u003C\u002Fspan\u003E\n\u003Cspan class=\&k\&\u003Eelse\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Enum\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Etotal_num\u003C\u002Fspan\u003E\n\u003Cspan class=\&k\&\u003Ereturn\u003C\u002Fspan\u003E \u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Erender\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ereply_morepic\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EfromUser\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EtoUser\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EINFOS\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Enum\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E完成之后,就可以到公众号里面看到效果啦,是不是非常有成就感呀~\u003Cbr\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-ef501b4e4fb94aaf743e7c_b.jpg\& data-rawwidth=\&386\& data-rawheight=\&632\& class=\&content_image\& width=\&386\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='386'%20height='632'&&\u002Fsvg&\& data-rawwidth=\&386\& data-rawheight=\&632\& class=\&content_image lazy\& width=\&386\& data-actualsrc=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-ef501b4e4fb94aaf743e7c_b.jpg\&\u003E\u003C\u002Ffigure\u003E想要体验真实的图文效果,关注微信公众号【\u003Cb\u003E一只IT汪\u003C\u002Fb\u003E】,回复关键字“\u003Cb\u003E电影\u003C\u002Fb\u003E”查看,是不是蛮炫酷哒?!\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E0.2 源码展示\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003EweixinInterface.py源码\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-python\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u003Cspan class=\&c1\&\u003E# -*- coding: utf-8 -*-\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Ehashlib\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Eweb\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Elxml\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Etime\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Eos\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Ere\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Ejson\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Eurllib\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&nn\&\u003Eurllib2\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Efrom\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Elxml\u003C\u002Fspan\u003E \u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eetree\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Erequests\u003C\u002Fspan\u003E\n\n\u003Cspan class=\&k\&\u003Eclass\u003C\u002Fspan\u003E \u003Cspan class=\&nc\&\u003EWeixinInterface\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n\n
\u003Cspan class=\&k\&\u003Edef\u003C\u002Fspan\u003E \u003Cspan class=\&nf\&\u003E__init__\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E):\u003C\u002Fspan\u003E\n
\u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eapp_root\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eos\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epath\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Edirname\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003E__file__\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etemplates_root\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eos\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epath\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ejoin\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eapp_root\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'templates'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Erender\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eweb\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etemplate\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Erender\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etemplates_root\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n\n
\u003Cspan class=\&k\&\u003Edef\u003C\u002Fspan\u003E \u003Cspan class=\&nf\&\u003EGET\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E):\u003C\u002Fspan\u003E\n
\u003Cspan class=\&c1\&\u003E#获取输入参数\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Edata\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eweb\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Einput\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Esignature\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Edata\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Esignature\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Etimestamp\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Edata\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etimestamp\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Enonce\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Edata\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Enonce\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eechostr\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Edata\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eechostr\u003C\u002Fspan\u003E\n
\u003Cspan class=\&c1\&\u003E#自己的token\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Etoken\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&你的token\&\u003C\u002Fspan\u003E \u003Cspan class=\&c1\&\u003E#这里改写你在微信公众平台里输入的token\u003C\u002Fspan\u003E\n
\u003Cspan class=\&c1\&\u003E#字典序排序\u003C\u002Fspan\u003E\n
\u003Cspan class=\&nb\&\u003Elist\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etoken\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etimestamp\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Enonce\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E\n
\u003Cspan class=\&nb\&\u003Elist\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Esort\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Esha1\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ehashlib\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Esha1\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n
\u003Cspan class=\&nb\&\u003Emap\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Esha1\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eupdate\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&nb\&\u003Elist\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Ehashcode\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Esha1\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ehexdigest\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n
\u003Cspan class=\&c1\&\u003E#sha1加密算法
\u003C\u002Fspan\u003E\n\n
\u003Cspan class=\&c1\&\u003E#如果是来自微信的请求,则回复echostr\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eif\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ehashcode\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E==\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Esignature\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Ereturn\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eechostr\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Edef\u003C\u002Fspan\u003E \u003Cspan class=\&nf\&\u003EPOST\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E):\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Estr_xml\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eweb\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Edata\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E \u003Cspan class=\&c1\&\u003E#获得post来的数据\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Exml\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eetree\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Efromstring\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Estr_xml\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&c1\&\u003E#进行XML解析\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Emstype\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Exml\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Efind\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&MsgType\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etext\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003EfromUser\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Exml\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Efind\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&FromUserName\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etext\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003EtoUser\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Exml\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Efind\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&ToUserName\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etext\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eif\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Emstype\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E==\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003E\&event\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Emscontent\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Exml\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Efind\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&Event\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etext\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eif\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Emscontent\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E==\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003E\&subscribe\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003EreplayText\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003Eu'''你好,这是我的小窝,以后这里将不定期更新各类干货,欢迎关注哟。'''\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Ereturn\u003C\u002Fspan\u003E \u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Erender\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ereply_text\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EfromUser\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EtoUser\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&nb\&\u003Eint\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etime\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etime\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()),\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EreplayText\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eif\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Emstype\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E==\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'text'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Econtent\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Exml\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Efind\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&Content\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etext\u003C\u002Fspan\u003E\u003Cspan class=\&c1\&\u003E#获得用户所输入的内容
\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eif\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Econtent\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E==\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003Eu\&电台\&\u003C\u002Fspan\u003E \u003Cspan class=\&ow\&\u003Eor\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Econtent\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E==\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003E\&fm\&\u003C\u002Fspan\u003E \u003Cspan class=\&ow\&\u003Eor\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Econtent\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E==\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003E\&Fm\&\u003C\u002Fspan\u003E \u003Cspan class=\&ow\&\u003Eor\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Econtent\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E==\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003E\&FM\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eurl\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'http:\u002F\u002Fm.xinli001.com\u002Ffm\u002F'\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Efmre\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eurllib\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eurlopen\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eurl\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eread\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Epa1\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ere\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ecompile\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003Er'&head&.*?&title&(.*?)-心理FM&\u002Ftitle&'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ere\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003ES\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Ets1\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ere\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Efindall\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epa1\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Efmre\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Epa3\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ere\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ecompile\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003Er'var broadcast_url = \&(.*?)\&, broadcastListUrl = \&\u002Ffm\u002Fitems\u002F'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ere\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003ES\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Ets3\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ere\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Efindall\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epa3\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Efmre\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E
\u003Cspan class=\&n\&\u003Ereq\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eurllib2\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003ERequest\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ets3\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&mi\&\u003E0\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E])\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eresponse\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eurllib2\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eurlopen\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ereq\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003EredirectUrl\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eresponse\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Egeturl\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003EmusicTitle\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ets1\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&mi\&\u003E0\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003EmusicDes\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E
\u003Cspan class=\&s1\&\u003E''\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003EmusicURL\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003EredirectUrl\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003EHQURL\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'http:\u002F\u002Fm.xinli001.com\u002Ffm\u002F'\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Ereturn\u003C\u002Fspan\u003E \u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Erender\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ereply_sound\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EfromUser\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EtoUser\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EmusicTitle\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EmusicDes\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EmusicURL\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EHQURL\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eelif\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Econtent\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E==\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003Eu'知友'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Etitle1\u003C\u002Fspan\u003E \u003Cspan class=

我要回帖

更多关于 微信运动不在公众号里 的文章

 

随机推荐