1. 程式人生 > >微信運動數據抓取(Python)

微信運動數據抓取(Python)

webp 抓包 微信瀏覽器 win elf 有用 ans bject 顯示

“微信運動”能夠向朋友分享一個包含有運動數據的網頁,網頁中就有我們需要的數據。url類似於:http://hw.weixin.qq.com/steprank/step/personal?openid=用戶的openid,其中有用於對於微信運動的唯一openid,打開fiddler進行抓包,首先打開fiddler,然後打開微信運動點擊我的主頁,如下:
技術分享圖片
微信通過請求頭區分是否是通過微信瀏覽器進行的請求,如果用瀏覽器直接打開鏈接會出現如下錯誤提示,說明不是通過微信瀏覽器打開被微信攔截了:
技術分享圖片
通過Fiddler的抓包數據我們可以通過偽造Request Headers請求頭抓取數據
Fiddler抓包顯示:
技術分享圖片


通過postman偽造請求頭模擬微信瀏覽器。偽造請求頭後成功在瀏覽器中得到了對應的網頁內容:
技術分享圖片

Python實現代碼:

import requests
import re
import json


class WechatSprot(object):
    def __init__(self, openid):
        self.openid = openid

    def getInfo(self):
        url = "http://hw.weixin.qq.com/steprank/step/personal"

        querystring = {"openid"
: self.openid} headers = { ‘host‘: "hw.weixin.qq.com", ‘connection‘: "keep-alive", ‘accept‘: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", ‘user-agent‘: "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 MicroMessenger/6.5.2.501 NetType/WIFI WindowsWechat QBCore/3.43.691.400 QQBrowser/9.0.2524.400"
, ‘accept-encoding‘: "gzip, deflate", ‘accept-language‘: "zh-CN,zh;q=0.8,en-us;q=0.6,en;q=0.5;q=0.4", ‘cookie‘: "hwstepranksk=JxMBWw1sxQhxnMgsJnnLh-r0VFzLH6RtJWv5b_j3z8MPs6-J; pass_ticket=p9R%2FqjIh%2BlXt%2BoxP7GIWrqm3Sbf1Minisk%2FNUz5zra4ReETR2ATI8H57zkEERCvG", } response = requests.request("GET", url, headers=headers, params=querystring) res = re.findall(‘window.json = (.+);‘, response.text) # print(res) # exit() return json.loads(res[0]) if __name__ == "__main__": obj = WechatSprot(用戶的openid) print(obj.getInfo())

微信運動數據抓取(Python)