python 爬蟲 東方財富網股票信息爬取

大體思路:先爬所有的股票代碼,再通過股票代碼獲取詳細數據

首先進行頁面分析,打開http://quote.eastmoney.com/center/gridlist.html#sh_a_board

按F12找數據來源接口,

發現參數pn爲頁數,則構建request請求,遍歷每一頁,f12爲股票代碼,對返回的數據進行處理

    sh_list = request.urlopen(request.Request(
        url=url, headers=header_dict)).read().decode(encoding='utf-8')
    '''字符串處理獲取股票代碼'''
    reg=re.compile(r'(?<=f12":")\d{6}')
    all_items = re.findall(reg,sh_list)
    return all_items
sz_alllist=[]
for x in range(1,113):
    sz_alllist+=get_sz(str(x))

得到上證A股的股票代碼文件

深證同理,不過深證的股票代碼有的是0開頭的,存進去後需要改一下單元格格式填充前面缺失的0

接下來隨便打開一個股票詳情頁面,http://quote.eastmoney.com/sh600778.html

F12抓包發現似乎是之前遇到過的數據綁定,則如果通過request來爬取的話,看不到數據,測試了一下發現數據的位置變成了橫槓-,所以還是繼續找接口來直接爬接口,

找到接口以後發現頁面會一直刷新,服務器會不斷的推送新的數據,有時候久的時候要等幾分鐘才能全部接受完返回,一開始不斷怎麼解決,後面嘗試把接口原本的sse改成get,就解決問題了。而且參數fields就是請求的數據,可以根據自己的需求來請求數據,我這裏就需要

大概這些吧 然後還是老套路,訪問接口接受數據存儲

    with request.urlopen(req2) as f:
        data_str=f.read().decode('utf-8').split('"data":')[1][:-1] #對返回的數據進行切割切片處理
        data_dict=json.loads(data_str) #將字符串轉爲字典對象

這裏因爲返回的數據是字符串,而且剛好是字典類型的,利用json庫的loads方法轉換爲字典,再自己新建一個字典定義數據的鍵

大體就這樣代碼在附件裏,有什麼問題可以留言評論,代碼僅供學習使用,切勿用於其他用途,後果自己承擔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章