微信运动 没有数据当天统计的总体运动数据和第二天看到前一天的总体运动数据不

微信运动数据抓取指南(With Python)a year ago9收藏分享举报文章被以下专栏收录Programmer养成中{&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&:3775052,&contributePermission&:&COLUMN_PUBLIC&,&translatedCommentPermission&:&all&,&canManage&:true,&intro&:&Programmer养成中&,&urlToken&:&lumoroad&,&id&:28330,&imagePath&:&4b70deef7.jpg&,&slug&:&lumoroad&,&applyReason&:&0&,&name&:&鲁磨路种猪场场志&,&title&:&鲁磨路种猪场场志&,&url&:&https:\u002F\u002Fzhuanlan.zhihu.com\u002Flumoroad&,&commentPermission&:&COLUMN_ALL_CAN_COMMENT&,&canPost&:true,&created&:,&state&:&COLUMN_NORMAL&,&followers&:2,&avatar&:{&id&:&4b70deef7&,&template&:&https:\u002F\u002Fpic3.zhimg.com\u002F{id}_{size}.jpg&},&activateAuthorRequested&:false,&following&:false,&imageUrl&:&https:\u002F\u002Fpic3.zhimg.com\u002F4b70deef7_l.jpg&,&articlesCount&:2},&state&:&accepted&,&targetPost&:{&titleImage&:&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-f87b1ddcaf244fec806e0_r.jpg&,&lastUpdated&:,&imagePath&:&v2-f87b1ddcaf244fec806e0.png&,&permission&:&ARTICLE_PUBLIC&,&topics&:[872,],&summary&:&寒假的最后几天不能再咸鱼了,决心从今天开始坚持撰写技术文章:D 尝试先申请了一下专栏,违规记录辣么多的情况下居然过了呢[愉快脸]----请用上的宝宝们点个赞啊 = = 前几天遇到一个奇怪的需求:抓取微信用户的“微信运动”数据。“微信运动”是腾讯官方的公…&,&copyPermission&:&ARTICLE_COPYABLE&,&translatedCommentPermission&:&all&,&likes&:0,&origAuthorId&:0,&publishedTime&:&T15:35:13+08:00&,&sourceUrl&:&&,&urlToken&:,&id&:2266999,&withContent&:false,&slug&:,&bigTitleImage&:false,&title&:&微信运动数据抓取指南(With Python)&,&url&:&\u002Fp\u002F&,&commentPermission&:&ARTICLE_ALL_CAN_COMMENT&,&snapshotUrl&:&&,&created&:,&comments&:0,&columnId&:0,&content&:&&,&parentId&:0,&state&:&ARTICLE_PUBLISHED&,&imageUrl&:&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-f87b1ddcaf244fec806e0_r.jpg&,&author&:{&bio&:&目前司职鲁磨路种猪场饲养员。https:\u002F\u002Fwww.ichen.pw&,&isFollowing&:false,&hash&:&4fbb86f7044df89edccaa&,&uid&:08,&isOrg&:false,&slug&:&wang-er-36-21&,&isFollowed&:false,&description&:&(??ω?`)&,&name&:&王二&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fwang-er-36-21&,&avatar&:{&id&:&v2-6e1b0de6fd49b0b823cda9ea420f687d&,&template&:&https:\u002F\u002Fpic1.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&memberId&:3775052,&excerptTitle&:&&,&voteType&:&ARTICLE_VOTE_CLEAR&},&id&:546126}],&title&:&微信运动数据抓取指南(With Python)&,&author&:&wang-er-36-21&,&content&:&寒假的最后几天不能再咸鱼了,决心从今天开始坚持撰写技术文章:D 尝试先申请了一下专栏,违规记录辣么多的情况下居然过了呢[愉快脸]\u003Cp\u003E----请用上的宝宝们点个赞啊 = =\u003C\u002Fp\u003E\u003Cp\u003E
前几天遇到一个奇怪的需求:抓取微信用户的“微信运动”数据。“微信运动”是腾讯官方的公众号,从用户手机中读取运动数据。对于一些公众号和微信合作方,腾讯有开放“微信运动”的数据接口,但对于普通开发者和公众号,想要获取用户的这些数据其实也不难!\u003C\u002Fp\u003E\u003Cp\u003E
“微信运动”能够向朋友分享一个包含有运动数据的网页,网页中就有我们需要的数据。url类似于:\u003Ca href=\&https:\u002F\u002Flink.zhihu.com\u002F?target=https%3A\u002F\u002Fhw.weixin.qq.com\u002Fsteprank\u002Fstep\u002Fpersonal%3Fopenid%3Do95gOt1TKSg3s05ibokCOGcjJ0Mc\& class=\& external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E\u003Cspan class=\&invisible\&\u003Ehttps:\u002F\u002F\u003C\u002Fspan\u003E\u003Cspan class=\&visible\&\u003Ehw.weixin.qq.com\u002Fstepra\u003C\u002Fspan\u003E\u003Cspan class=\&invisible\&\u003Enk\u002Fstep\u002Fpersonal?openid=o95gOt1TKSg3s05ibokCOGcjJ0Mc\u003C\u002Fspan\u003E\u003Cspan class=\&ellipsis\&\u003E\u003C\u002Fspan\u003E\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cp\u003E在微信PC客户端打开是这样的:\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-a37a63e0a97e09d24ba0afb212a219e4_b.jpg\& data-rawwidth=\&878\& data-rawheight=\&683\& class=\&origin_image zh-lightbox-thumb\& width=\&878\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-a37a63e0a97e09d24ba0afb212a219e4_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='878'%20height='683'&&\u002Fsvg&\& data-rawwidth=\&878\& data-rawheight=\&683\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&878\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-a37a63e0a97e09d24ba0afb212a219e4_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-a37a63e0a97e09d24ba0afb212a219e4_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E
但是在浏览器中打开这个网页得到的结果却是提示:请在微信客户端打开!可以猜测到,服务器可能会根据请求头来判定该请求是否来自微信客户端的内置浏览器。尝试在windows下用fiddler进行抓包(请忽略xp,这是我的笔记本上唯一能用的windows虚拟机了=_=):\u003C\u002Fp\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-ab9df15020_b.jpg\& data-rawwidth=\&1525\& data-rawheight=\&639\& class=\&origin_image zh-lightbox-thumb\& width=\&1525\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-ab9df15020_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1525'%20height='639'&&\u002Fsvg&\& data-rawwidth=\&1525\& data-rawheight=\&639\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1525\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-ab9df15020_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-ab9df15020_b.jpg\&\u003E\u003C\u002Ffigure\u003E可以看到在请求这个url时,请求头的各个信息。让我们来尝试伪造Request Headers看看能不能获取对应的网页源代码吧。\u003C\u002Fp\u003E\u003Cp\u003E其实可以先通过Chrome下的一些工具例如Edit the cookie, Modify Headers来伪造Request Headers以模拟微信浏览器。伪造请求头后成功在浏览器中get到了对应的网页。\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-71fe77bb_b.jpg\& data-rawwidth=\&1210\& data-rawheight=\&957\& class=\&origin_image zh-lightbox-thumb\& width=\&1210\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-71fe77bb_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1210'%20height='957'&&\u002Fsvg&\& data-rawwidth=\&1210\& data-rawheight=\&957\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1210\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-71fe77bb_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-71fe77bb_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cbr\u003E\u003Cp\u003E看来通过伪造Request Headers应该就能请求到含有运动数据的页面了!现在可以开始写代码了,尝试用Python的requests库模拟微信客户端内置浏览器获取含有运动数据的页面。作为可能是蓝星上最适宜人类食用的HTTP库,只需要将Cookies,Headers作为get方法的参数就能够达到我们想要的效果了。\u003C\u002Fp\u003E\u003Cp\u003E解释运行后成功请求到了含有微信运动数据的源代码!在审查源代码的过程中会发现,如图上灰色部分,实际的运动数据隐藏在JavaScript代码中的一段 JSON code中,我选择通过正则表达式匹配到JSON code,再通过Python内置的json库解析。\u003C\u002Fp\u003E\u003Cp\u003E通过url不难看出来其中有一个url参数openid,应该是“微信运动”公众号对应的用户openid。公众号想要获取用户微信运动数据之前,应当引导用户分享一次当日运动数据,获取链接中的openid。\u003C\u002Fp\u003E\u003Cp\u003E还有就是Cookie过期的问题,虽然目前抓取的Cookie用了三天还没过期,但长期使用的话还是应当定期更新Cookie,并建议用多个Cookie同时进行抓取,减小爬虫突然中断的概率。\u003C\u002Fp\u003E\u003Cp\u003E鉴于完整的源代码只有五十多行,就直接把代码放在文章末尾吧。\u003C\u002Fp\u003E\u003Cp\u003E说起来好像是非常简单的爬虫呢QAQ,第一次写技术文章,希望大家能够资瓷。\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-python\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u003Cspan class=\&ch\&\u003E#!\u002Fusr\u002Fbin\u002Fpython3\u003C\u002Fspan\u003E\n\n\u003Cspan class=\&sd\&\u003E\&\&\& This script simulate a PC wechat client to get wechat sports data \&\&\&\u003C\u002Fspan\u003E\n\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\&\u003Erequests\u003C\u002Fspan\u003E\n\n\u003Cspan class=\&c1\&\u003E# Headers: simulate wechat embedded browser\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003EHEADERS\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&p\&\u003E{\u003C\u002Fspan\u003E\n
\u003Cspan class=\&s1\&\u003E'Connection'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'keep-alive'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\n
\u003Cspan class=\&s1\&\u003E'Accept'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'text\u002Fhtml,application\u002Fxhtml+xml,application\u002Fq=0.9,image\u002Fwebp,*\u002F*;q=0.8'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\n
\u003Cspan class=\&s1\&\u003E'User-Agent'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'Mozilla\u002F5.0 (Windows NT 6.1; WOW64) AppleWebKit\u002F537.36 (KHTML, like Gecko)'\u003C\u002Fspan\u003E\n
\u003Cspan class=\&s1\&\u003E' Chrome\u002F39.0.2171.95 Safari\u002F537.36 MicroMessenger\u002F6.5.2.501'\u003C\u002Fspan\u003E\n
\u003Cspan class=\&s1\&\u003E' NetType\u002FWIFI WindowsWechat QBCore\u002F3.43.27.400 QQBrowser\u002F9.0.'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\n
\u003Cspan class=\&s1\&\u003E'Accept-Encoding'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'gzip, deflate'\u003C\u002Fspan\u003E\n\u003Cspan class=\&p\&\u003E}\u003C\u002Fspan\u003E\n\n\u003Cspan class=\&n\&\u003ECOOKIES\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&p\&\u003E{\u003C\u002Fspan\u003E\n
\u003Cspan class=\&s1\&\u003E'hwstepranksk'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'填入Cookie'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\n
\u003Cspan class=\&s1\&\u003E'pass_ticket'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'填入Cookie'\u003C\u002Fspan\u003E\n\u003Cspan class=\&p\&\u003E}\u003C\u002Fspan\u003E\n\n\u003Cspan class=\&n\&\u003EREQUEST_URL\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'https:\u002F\u002Fhw.weixin.qq.com\u002Fsteprank\u002Fstep\u002Fpersonal'\u003C\u002Fspan\u003E\n\n\n\u003Cspan class=\&k\&\u003Edef\u003C\u002Fspan\u003E \u003Cspan class=\&nf\&\u003Eget_info\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eopenid\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E):\u003C\u002Fspan\u003E\n
\u003Cspan class=\&sd\&\u003E\&\&\&Get data according to openid\&\&\&\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eparams\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&p\&\u003E{\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&openid\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eopenid\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E}\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Edata\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\&\u003Eurl\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EREQUEST_URL\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eparams\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eparams\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ecookies\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003ECOOKIES\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eheaders\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EHEADERS\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Edata\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eencoding\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003E\&utf-8\&\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Etry\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Ereturn\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eparse_code\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Edata\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Etext\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eexcept\u003C\u002Fspan\u003E \u003Cspan class=\&ne\&\u003ELookupError\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Ereturn\u003C\u002Fspan\u003E \u003Cspan class=\&p\&\u003E{\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&Error\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003E\&Cookies could be out of date\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E}\u003C\u002Fspan\u003E\n\n\n\u003Cspan class=\&k\&\u003Edef\u003C\u002Fspan\u003E \u003Cspan class=\&nf\&\u003Eparse_code\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ecode\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E):\u003C\u002Fspan\u003E\n
\u003Cspan class=\&sd\&\u003E\&\&\&Parse web page source code\&\&\&\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Ematch_strings\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=\&s2\&\u003Er\&window.json = (\\S+);\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ecode\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&c1\&\u003E# json strings are hided in js code\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eif\u003C\u002Fspan\u003E \u003Cspan class=\&nb\&\u003Elen\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ematch_strings\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E==\u003C\u002Fspan\u003E \u003Cspan class=\&mi\&\u003E0\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eraise\u003C\u002Fspan\u003E \u003Cspan class=\&ne\&\u003ELookupError\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eelse\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Ejson_string\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ematch_strings\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\&\u003Ejson_object\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\&\u003Ejson_string\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Edata_dict\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&p\&\u003E{\u003C\u002Fspan\u003E\n
\u003Cspan class=\&s2\&\u003E\&openid\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ejson_object\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=\&s2\&\u003E\&myopenid\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E),\u003C\u002Fspan\u003E\n
\u003Cspan class=\&s2\&\u003E\&Today Steps\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ejson_object\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=\&s2\&\u003E\&rankdesc\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\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=\&s2\&\u003E\&score\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E),\u003C\u002Fspan\u003E\n
\u003Cspan class=\&s2\&\u003E\&History Steps\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ejson_object\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=\&s2\&\u003E\&rankdetaillist\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)[\u003C\u002Fspan\u003E\u003Cspan class=\&mi\&\u003E0\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\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=\&s2\&\u003E\&score\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E),\u003C\u002Fspan\u003E\n
\u003Cspan class=\&s2\&\u003E\&Highest Record\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ejson_object\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=\&s2\&\u003E\&rankdetaillist\&\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.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eget\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&score\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&p\&\u003E}\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Ereturn\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Edata_dict\u003C\u002Fspan\u003E\n\n\n\u003Cspan class=\&k\&\u003Eif\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003E__name__\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E==\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003E\&__main__\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eprint\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eget_info\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&o95gOt0QsJ4O4vxBVUzmYeXGuN74\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E))\u003C\u002Fspan\u003E\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E&,&updated&:new Date(&T07:35:13.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:8,&collapsedCount&:0,&likeCount&:9,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&titleImage&:&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-f87b1ddcaf244fec806e0_r.jpg&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&reviewers&:[],&topics&:[{&url&:&https:\u002F\u002Fwww.zhihu.com\u002Ftopic\u002F&,&id&:&&,&name&:&Python&},{&url&:&https:\u002F\u002Fwww.zhihu.com\u002Ftopic\u002F&,&id&:&&,&name&:&爬虫 (计算机网络)&},{&url&:&https:\u002F\u002Fwww.zhihu.com\u002Ftopic\u002F&,&id&:&&,&name&:&微信&}],&adminClosedComment&:false,&titleImageSize&:{&width&:600,&height&:375},&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&tipjarState&:&inactivated&,&annotationAction&:[],&sourceUrl&:&&,&pageCommentsCount&:8,&hasPublishingDraft&:false,&snapshotUrl&:&&,&publishedTime&:&T15:35:13+08:00&,&url&:&\u002Fp\u002F&,&lastestLikers&:[{&bio&:&&,&isFollowing&:false,&hash&:&9ecc21d096&,&uid&:471000,&isOrg&:false,&slug&:&wang-jin-xi-91-68&,&isFollowed&:false,&description&:&学习永不止步!&,&name&:&王进喜&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fwang-jin-xi-91-68&,&avatar&:{&id&:&v2-66bc215047cdb&,&template&:&https:\u002F\u002Fpic2.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&Mathematicians' game&,&isFollowing&:false,&hash&:&a112d8b8eb188&,&uid&:12,&isOrg&:false,&slug&:&zhi-jin-38&,&isFollowed&:false,&description&:&玩数学;玩动物&,&name&:&蛰瑾&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fzhi-jin-38&,&avatar&:{&id&:&eedfa8cabbb7d1e1d4a0b3&,&template&:&https:\u002F\u002Fpic2.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&房价快速搭建发放奖金萨夫拉飞机垃圾上单&,&isFollowing&:false,&hash&:&b08ea7ef27fb7bf39af2b&,&uid&:064700,&isOrg&:false,&slug&:&shuo-qiu-85&,&isFollowed&:false,&description&:&&,&name&:&朔秋&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fshuo-qiu-85&,&avatar&:{&id&:&5c18773bad6&,&template&:&https:\u002F\u002Fpic3.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&&,&isFollowing&:false,&hash&:&bae9eab2bf&,&uid&:64,&isOrg&:false,&slug&:&li-qian-53-48&,&isFollowed&:false,&description&:&&,&name&:&李倩&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fli-qian-53-48&,&avatar&:{&id&:&da8e974dc&,&template&:&https:\u002F\u002Fpic4.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&num py&,&isFollowing&:false,&hash&:&0b6d6deb1ee81296daa51859&,&uid&:40,&isOrg&:false,&slug&:&li-yang-10-39-79&,&isFollowed&:false,&description&:&&,&name&:&李阳&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fli-yang-10-39-79&,&avatar&:{&id&:&0bcdcb1db750&,&template&:&https:\u002F\u002Fpic2.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false}],&summary&:&\u003Cimg src=\&http:\u002F\u002Fpic1.zhimg.com\u002Fv2-a37a63e0a97e09d24ba0afb212a219e4_200x112.png\& data-rawwidth=\&878\& data-rawheight=\&683\& class=\&origin_image inline-img zh-lightbox-thumb\& data-original=\&http:\u002F\u002Fpic1.zhimg.com\u002Fv2-a37a63e0a97e09d24ba0afb212a219e4_r.png\&\u003E寒假的最后几天不能再咸鱼了,决心从今天开始坚持撰写技术文章:D 尝试先申请了一下专栏,违规记录辣么多的情况下居然过了呢[愉快脸]----请用上的宝宝们点个赞啊 = = 前几天遇到一个奇怪的需求:抓取微信用户的“微信运动”数据。“微信运动”是腾讯官方的公…&,&reviewingCommentsCount&:0,&meta&:{&previous&:null,&next&:null},&annotationDetail&:null,&commentsCount&:8,&likesCount&:9,&FULLINFO&:true}},&User&:{&wang-er-36-21&:{&isFollowed&:false,&name&:&王二&,&headline&:&(??ω?`)&,&avatarUrl&:&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-6e1b0de6fd49b0b823cda9ea420f687d_s.jpg&,&isFollowing&:false,&type&:&people&,&slug&:&wang-er-36-21&,&bio&:&目前司职鲁磨路种猪场饲养员。https:\u002F\u002Fwww.ichen.pw&,&hash&:&4fbb86f7044df89edccaa&,&uid&:08,&isOrg&:false,&description&:&(??ω?`)&,&badge&:{&identity&:null,&bestAnswerer&:null},&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fwang-er-36-21&,&avatar&:{&id&:&v2-6e1b0de6fd49b0b823cda9ea420f687d&,&template&:&https:\u002F\u002Fpic1.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false}},&Comment&:{},&favlists&:{}},&me&:{},&global&:{&experimentFeatures&:{&ge3&:&ge3_9&,&ge2&:&ge2_1&,&androidPassThroughPush&:&all&,&sEI&:&c&,&nwebQAGrowth&:&experiment&,&qawebRelatedReadingsContentControl&:&close&,&liveStore&:&ls_a2_b2_c1_f2&,&qawebThumbnailAbtest&:&new&,&nwebSearch&:&nweb_search_heifetz&,&rt&:&y&,&showVideoUploadAttention&:&true&,&isOffice&:&false&,&enableTtsPlay&:&post&,&newQuestionDiversion&:&https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F&,&newLiveFeedMediacard&:&new&,&newMobileAppHeader&:&true&,&hybridZhmoreVideo&:&yes&,&nwebGrowthPeople&:&default&,&nwebSearchSuggest&:&default&,&qrcodeLogin&:&qrcode&,&enableVoteDownReasonMenu&:&enable&,&isf8&:&0&,&isShowUnicomFreeEntry&:&unicom_free_entry_off&,&newMobileColumnAppheader&:&new_header&,&androidDbRecommendAction&:&open&,&zcmLighting&:&zcm&,&androidDbFeedHashTagStyle&:&button&,&appStoreRateDialog&:&close&,&default&:&None&,&isNewNotiPanel&:&no&,&wechatShareModal&:&wechat_share_modal_show&,&growthBanner&:&default&,&androidProfilePanel&:&panel_b&}},&columns&:{&next&:{}},&columnPosts&:{},&columnSettings&:{&colomnAuthor&:[],&uploadAvatarDetails&:&&,&contributeRequests&:[],&contributeRequestsTotalCount&:0,&inviteAuthor&:&&},&postComments&:{},&postReviewComments&:{&comments&:[],&newComments&:[],&hasMore&:true},&favlistsByUser&:{},&favlistRelations&:{},&promotions&:{},&switches&:{&couldSetPoster&:false},&draft&:{&titleImage&:&&,&titleImageSize&:{},&isTitleImageFullScreen&:false,&canTitleImageFullScreen&:false,&title&:&&,&titleImageUploading&:false,&error&:&&,&content&:&&,&draftLoading&:false,&globalLoading&:false,&pendingVideo&:{&resource&:null,&error&:null}},&drafts&:{&draftsList&:[],&next&:{}},&config&:{&userNotBindPhoneTipString&:{}},&recommendPosts&:{&articleRecommendations&:[],&columnRecommendations&:[]},&env&:{&edition&:{&baidu&:false,&yidianzixun&:false,&qqnews&:false},&isAppView&:false,&appViewConfig&:{&content_padding_top&:128,&content_padding_bottom&:56,&content_padding_left&:16,&content_padding_right&:16,&title_font_size&:22,&body_font_size&:16,&is_dark_theme&:false,&can_auto_load_image&:true,&app_info&:&OS=iOS&},&isApp&:false,&userAgent&:{&ua&:&Mozilla\u002F5.0 (compatible, MSIE 11, Windows NT 6.3; Trident\u002F7.0; rv:11.0) like Gecko&,&browser&:{&name&:&IE&,&version&:&11&,&major&:&11&},&engine&:{&version&:&7.0&,&name&:&Trident&},&os&:{&name&:&Windows&,&version&:&8.1&},&device&:{},&cpu&:{}}},&message&:{&newCount&:0},&pushNotification&:{&newCount&:0}}

我要回帖

更多关于 获取微信运动数据接口 的文章

 

随机推荐