国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python爬蟲:Python+WebSocket獲取體育實時賽事數(shù)據(jù)

這篇具有很好參考價值的文章主要介紹了Python爬蟲:Python+WebSocket獲取體育實時賽事數(shù)據(jù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Python爬蟲:Python+WebSocket獲取體育實時賽事數(shù)據(jù)

苦于websocket的能跑的案例太少了,還沒開始就要什么逆向,一來就是攔路虎,太折磨人了,無意間看了一個類似的文章并學習更新了,感謝大佬,對websocket有了一個新的認識。
python版本:Python爬蟲:Python+WebSocket獲取體育實時賽事數(shù)據(jù)

目標網(wǎng)站:http://m.611.com/

1、打開開發(fā)者工具(Ctrl+Shift+I)啟用瀏覽器仿真器
Python爬蟲:Python+WebSocket獲取體育實時賽事數(shù)據(jù)
2、觸摸啟用仿真

將鼠標移到設備上可查看圓形“觸摸”光標。這將對基于觸摸的 JavaScript 事件( 如touchstart,touchmove和touchend)做出反應。鼠標特定的事件和 CSS 效果不會 做出反應。
按住Shift鍵,然后單擊并移動鼠標以模擬雙指縮放操作。
通過觀察數(shù)據(jù)一段時間會變~
Python爬蟲:Python+WebSocket獲取體育實時賽事數(shù)據(jù)
沒發(fā)現(xiàn)比分是怎么和球隊怎么拼接而成,疑惑~
通過查看發(fā)現(xiàn)是基于websockt實時更新數(shù)據(jù),接下來開始分析:
Python爬蟲:Python+WebSocket獲取體育實時賽事數(shù)據(jù)
3、參數(shù)分析:
{“command”:“RegisterInfo”,“action”:“Web”,“ids”:[],“UserInfo”:{“Version”:“[1667099935000]{“webkit”:true,“version”:“605.1.15”,“safari”:true}”,“Url”:“http://m.611.com/”}}
{“command”:“JoinGroup”,“action”:“SoccerLive”,“ids”:[303794138,303747120,303794153,303748872,303747117,303749323,303755706,303747122,303755264,303794150,303794144,303747115]}
{“command”:“JoinGroup”,“action”:“BasketSoccerLive”,“ids”:[303683091,303683092,303674542,303674543,303674544,303674545,303674546,303683093,303683094,303683096,303683097,303683098]}
通過多次刷新頁面/更換瀏覽器得出結(jié)論:
第一條內(nèi)容是連接服務器用的,action、ids、Url都是不變的,只有UserInfo里面內(nèi)容是變化的,其中Version中括號里面是一個時間戳+000,后面加瀏覽器參數(shù),那么只需要更改時間戳就可以了,瀏覽器參數(shù)直接復制就行。
第二、三條內(nèi)容是加入群組用的,參數(shù)都是固定的,不需要改。

4、分析完發(fā)送的內(nèi)容,后面就容易了,只需要再得到url就可以嘗試連接了,返回headers界面,發(fā)現(xiàn)url后面加了一段字符串參數(shù),字符串每次刷新后都不同,應該是js加密生成的,找js文件逆向太麻煩,先看看前面的請求有沒有這個參數(shù);
Python爬蟲:Python+WebSocket獲取體育實時賽事數(shù)據(jù)
直接復制f3fa2472b9db40f89bcf82c32e2357e6
ctrl+f搜索:
Python爬蟲:Python+WebSocket獲取體育實時賽事數(shù)據(jù)Python爬蟲:Python+WebSocket獲取體育實時賽事數(shù)據(jù)
發(fā)現(xiàn)這樣GET不就可以了,太喜歡這樣了,對剛開始學爬蟲的小白我才能學的起走……

pip install websocket-client
開始寫代碼:

import requests

def get_token():
    # 獲取token
    token_url = 'http://m.611.com/Live/GetToken'
    headers = {
        'Accept': '*/*',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Connection': 'keep-alive',
        'Referer': 'http://m.611.com/',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',
        'X-Requested-With': 'XMLHttpRequest'
    }
    return requests.get(token_url, headers=headers, verify=False).json()['Data']

接著定義一個類,初始化url、websocket,具體代碼如下:

import time
import websocket

class Leyu:
    def __init__(self):
        # 獲取token
        self.token = get_token()
        # 初始化服務器地址
        self.ws_url = 'ws://push.611.com:6118/{}'.format(self.token)
        # 初始化websocket
        self.socket = websocket.WebSocketApp(
            self.ws_url,
            on_message=self.on_message,
            on_error=self.on_error,
            on_close=self.on_close,
            on_open=self.on_open
        )

    def login(self):
        # 向服務器發(fā)送連接信息
        msg = '{"command":"RegisterInfo","action":"Web","ids":[],"UserInfo":{"Version":"[' + str(int(time.time())) + '000' + ']\
        {\\"chrome\\":true,\\"version\\":\\"106.0.0.0\\",\\"webkit\\":true}","Url":"https://live.611.com/"}}'
        self.socket.send(msg)

    def join_group(self):
        # 向服務器發(fā)送入組信息
        msg1 = '{"command":"JoinGroup","action":"SoccerLive","ids":[]}'
        msg2 = '{"command":"JoinGroup","action":"BasketSoccerLive","ids":[]}'
        self.socket.send(msg1)
        self.socket.send(msg2)

    def on_message(self, ws, message):
        # 輸出服務器推送過來的內(nèi)容
        print(message)

    def on_error(self, ws, error):
        # 報錯
        print('報錯:', error)

    def on_close(self, ws, *args):
        # 關(guān)閉連接
        print("####### on_close #######")

    def on_open(self, *args):
        # 連接服務器
        self.login()
        print('連接成功!')
        self.join_group()

    def run(self):
        # 運行循環(huán)
        self.socket.run_forever()
if __name__ == '__main__':
    ly = Leyu()
    ly.run()

運行:其學習的過程中踩了不少的坑,能真正跑起的案例可唯是鳳毛麟角。不知道是因為大佬們用的版本不一樣,還是什么問題。
Python爬蟲:Python+WebSocket獲取體育實時賽事數(shù)據(jù)Python爬蟲:Python+WebSocket獲取體育實時賽事數(shù)據(jù)

Python爬蟲:Python+WebSocket獲取體育實時賽事數(shù)據(jù)
通過推測試一個列表字典里的分別為A隊和B隊的比分,分成了三個列表,然后實時更新數(shù)據(jù)。

另擴展:
連接websocket還有一個異步庫可以用,aiowebsocket

import time
import websocket

import asyncio
import requests
import logging
import time
from aiowebsocket.converses import AioWebSocket

# 爬蟲網(wǎng)址 http://m.611.com/


def get_token():
    # 獲取token
    token_url = 'http://m.611.com/Live/GetToken'
    headers = {
        'Accept': '*/*',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Connection': 'keep-alive',
        'Referer': 'http://m.611.com/',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',
        'X-Requested-With': 'XMLHttpRequest'
    }
    return requests.get(token_url, headers=headers, verify=False).json()['Data']


async def startup(uri):
    async with AioWebSocket(uri) as aws:
        converse = aws.manipulator
        # 向服務器發(fā)送消息
        await converse.send('{"command":"RegisterInfo","action":"Web","ids":[],"UserInfo":{"Version":"[' + str(int(time.time())) + '000' + ']\
        {\\"chrome\\":true,\\"version\\":\\"106.0.0.0\\",\\"webkit\\":true}","Url":"https://live.611.com/"}}')
        await converse.send('{"command":"JoinGroup","action":"SoccerLive","ids":[]}')
        await converse.send('{"command":"JoinGroup","action":"BasketSoccerLive","ids":[]}')
        while True:
            mes = await converse.receive()
            print(mes)
            print("================*================")


if __name__ == '__main__':
    token = get_token()
    remote = 'ws://push.611.com:6118/{}'.format(token)
    try:
        loop = asyncio.new_event_loop()
        asyncio.set_event_loop(loop)
        loop.run_until_complete(startup(remote))
        # asyncio.get_event_loop().run_until_complete(startup(remote))
    except KeyboardInterrupt as exc:
        logging.info('Quit.')

總結(jié):
整個過程其實就是分析,分析數(shù)據(jù)獲取方式,分析鏈接,分析參數(shù),代碼寫起來就比較容易了。這個網(wǎng)站貌似沒什么反爬措施,作為一個練手的項目還是不錯的。文章來源地址http://www.zghlxwxcb.cn/news/detail-412225.html

到了這里,關(guān)于Python爬蟲:Python+WebSocket獲取體育實時賽事數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • Python網(wǎng)絡爬蟲-WebSocket數(shù)據(jù)抓取

    目錄 前言 1、WebSocket請求的分析通常涉及以下幾個方面: 2、利用WebSocket爬取數(shù)據(jù) 總結(jié) 最后,創(chuàng)作不易!非常感謝大家的關(guān)注、點贊、評論啦!謝謝三連哦!好人好運連連,學習進步!工作順利哦!? 博主介紹:?專注于前后端、機器學習、人工智能應用領(lǐng)域開發(fā)的優(yōu)質(zhì)創(chuàng)作

    2024年04月27日
    瀏覽(18)
  • 如何用 python 獲取實時的股票數(shù)據(jù)?

    Web爬取 Web爬取是指從網(wǎng)站上獲取特定數(shù)據(jù)的過程。我們通常使用Python的Requests庫來訪問網(wǎng)站。網(wǎng)站會以HTML格式返回相應數(shù)據(jù),我們需要使用Beautiful Soup庫將HTML格式的數(shù)據(jù)轉(zhuǎn)換為Python對象進行操作。 Python中,我們可以使用OpenPyXL庫來讀寫Excel文件。使用OpenPyXL,我們可以創(chuàng)建、

    2024年02月20日
    瀏覽(18)
  • 基于SSM的面向高校校園體育用品租借管理系統(tǒng)+94593(免費領(lǐng)源碼)可做計算機畢業(yè)設計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案

    基于SSM的面向高校校園體育用品租借管理系統(tǒng)+94593(免費領(lǐng)源碼)可做計算機畢業(yè)設計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案

    隨著我國經(jīng)濟迅速發(fā)展,人們對手機的需求越來越大,各種手機軟件也都在被廣泛應用,但是對于手機進行數(shù)據(jù)信息管理,對于手機的各種軟件也是備受用戶的喜愛,微信小程序的面向高校校園體育用品租借管理系統(tǒng)被用戶普遍使用,為方便用戶能夠可以隨時進行微信小程序

    2024年02月22日
    瀏覽(19)
  • Python爬蟲 | 利用python爬蟲獲取想要搜索的數(shù)據(jù)(某du)

    Python爬蟲 | 利用python爬蟲獲取想要搜索的數(shù)據(jù)(某du)

    這篇文章主要介紹了利用Python爬蟲采集想要搜索的信息(利用某du的接口實現(xiàn))并且處理掉它的反爬手段,文中示例代碼很詳細,具有一定的學習價值,感興趣的小伙伴快來一起學習吧。 大家在日常生活中經(jīng)常需要查找不同的事物的相關(guān)信息,今天我們利用python來實現(xiàn)這一個

    2024年02月01日
    瀏覽(24)
  • 利用Python爬蟲獲取xx數(shù)據(jù)

    利用Python爬蟲獲取xx數(shù)據(jù)

    目錄 一、前言 二、requests 請求庫 1、requests 安裝 2、requests 的基本使用 三、Beautiful Soup 1、Beautiful Soup 安裝 2、BeautifulSoup對象介紹與創(chuàng)建 3、BeautifulSoup對象的find方法 四、總結(jié) 什么是爬蟲? 網(wǎng)絡爬蟲(又被稱為網(wǎng)頁蜘蛛,網(wǎng)絡機器人)就是模擬客戶端發(fā)送網(wǎng)絡請求,獲取響應

    2024年03月20日
    瀏覽(23)
  • Python旅游景點數(shù)據(jù)大屏 爬蟲+實時監(jiān)控系統(tǒng) 旅游數(shù)據(jù)可視化 大數(shù)據(jù) 畢業(yè)設計

    Python旅游景點數(shù)據(jù)大屏 爬蟲+實時監(jiān)控系統(tǒng) 旅游數(shù)據(jù)可視化 大數(shù)據(jù) 畢業(yè)設計

    1、系統(tǒng)功能 可視化: (1)數(shù)據(jù)可視化,實現(xiàn)中國地圖、動態(tài)柱狀圖、餅圖、環(huán)圖、漏斗圖等方式對數(shù)據(jù)庫數(shù)據(jù)分析 (2)百度熱力圖展示景點銷售數(shù)據(jù) 爬蟲: **去哪兒網(wǎng)**熱門景點數(shù)據(jù)爬蟲,解析后存儲入mysql數(shù)據(jù)庫中 實現(xiàn)功能 (1)爬蟲:爬取去哪兒網(wǎng)的熱門景點數(shù)據(jù),

    2024年02月13日
    瀏覽(27)
  • Python爬蟲——Selenium在獲取網(wǎng)頁數(shù)據(jù)方面的使用

    Python爬蟲——Selenium在獲取網(wǎng)頁數(shù)據(jù)方面的使用

    目錄 一、Selenium (一)引入 ?(二)啟動瀏覽器 二、操作 (一)點擊 (二)輸入 三、數(shù)據(jù)獲取 四、特點 五、抓取拉鉤實例 六、其他操作 (一)窗口切換 代碼 (二)操作下拉列表/無頭瀏覽器 代碼 ????????一個電影票房的網(wǎng)站里,響應數(shù)據(jù)是一串完全看不懂的字符串

    2024年02月07日
    瀏覽(25)
  • 快樂學Python,數(shù)據(jù)分析之使用爬蟲獲取網(wǎng)頁內(nèi)容

    快樂學Python,數(shù)據(jù)分析之使用爬蟲獲取網(wǎng)頁內(nèi)容

    在上一篇文章中,我們了解了爬蟲的原理以及要實現(xiàn)爬蟲的三個主要步驟:下載網(wǎng)頁-分析網(wǎng)頁-保存數(shù)據(jù)。 下面,我們就來看一下:如何使用Python下載網(wǎng)頁。 瀏覽器畫網(wǎng)頁的流程,是瀏覽器將用戶輸入的網(wǎng)址告訴網(wǎng)站的服務器,然后網(wǎng)站的服務器將網(wǎng)址對應的網(wǎng)頁返回給瀏覽

    2024年01月17日
    瀏覽(21)
  • 【一個超簡單的爬蟲demo】探索新浪網(wǎng):使用 Python 爬蟲獲取動態(tài)網(wǎng)頁數(shù)據(jù)

    【一個超簡單的爬蟲demo】探索新浪網(wǎng):使用 Python 爬蟲獲取動態(tài)網(wǎng)頁數(shù)據(jù)

    可以實戰(zhàn)教爬蟲嗎,搭個環(huán)境嘗試爬進去。嘗試收集一些數(shù)據(jù) 一位粉絲想了解爬蟲,我們今天從最基礎(chǔ)的開始吧! 本文將介紹如何使用 Python 爬蟲技術(shù)爬取新浪網(wǎng)首頁的內(nèi)容。新浪網(wǎng)作為一個內(nèi)容豐富且更新頻繁的新聞網(wǎng)站,是理解動態(tài)網(wǎng)頁爬取的絕佳例子。 首先,確保你

    2024年02月04日
    瀏覽(19)
  • python爬蟲之JS逆向基礎(chǔ)小案例:網(wǎng)抑云數(shù)據(jù)獲取

    python爬蟲之JS逆向基礎(chǔ)小案例:網(wǎng)抑云數(shù)據(jù)獲取

    嗨嘍~大家好呀,這里是魔王吶 ? ~! python更多源碼/資料/解答/教程等 點擊此處跳轉(zhuǎn)文末名片免費獲取 所用軟件 解釋器: python 3.8 編輯器: pycharm 2022.3 使用的模塊 第三方模塊: requests 數(shù)據(jù)請求 execjs pip install pyexecjs 內(nèi)置模塊(無需安裝): nodejs 模塊安裝: win + R 輸入cmd 輸入安

    2024年01月20日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包