python調用QQ機器人向指定QQ發消息

暫時沒想到這個能用來幹什麼,只是剛好看到相關文章,學習一下,就拿獲取基金信息來做試驗把

 

爬取基金的信息就不介紹了,請參考https://www.cnblogs.com/becks/p/14500495.html

這裏主要是對輸出內容修改了,改成不寫入表格,實時打印出來

 

正文,通過調用別人已經架設好的QQ消息服務來給指定QQ發送消息

消息服務提供方https://qmsg.zendee.cn/index.html

 

我們先要到這裏面註冊賬號,選擇QQ機器人,綁定發送對象(QQ),獲取key

下面截圖頁面標籤對應QQ機器人,綁定發送對象(QQ),獲取key。

 

 

設置好後,接收消息的QQ需要添加機器人QQ爲好友(不加好友咋給你發消息)

 

然後就是python腳本中的代碼部分,直接提取關鍵

qmsg_code = 'https://qmsg.zendee.cn/send/key?msg='
jj = qmsg_code + str(name[0]) + '\n' +"當前估值" + str(GUZHI[0]) + '\n' + "盤中漲跌" + ZHANGDIE[0]
message_send = requests.get(jj)

解析一下

第一行是固定內容,提供服務的接口地址(未包含發送內容),裏面有個key,就是上面圖片裏註冊申請後的key

第二行是發送的內容,由接口地址和實際發送內容組成(參數),這裏是指,地址+基金名稱+當前估值+盤中漲跌

第三行請求接口+參數,執行後,機器人即發送消息。下圖樣子

 

 

附上所有代碼咯

# -*-coding:utf8-*-
# encoding:utf-8
import requests
import re
import time
import random
import openpyxl
import xlrd

import requests

cookies = {
    'em_hq_fls': 'js',
    'em-quote-version': 'topspeed',
    'HAList': 'f-0-000001-%u4E0A%u8BC1%u6307%u6570%2Ca-sz-002496-%u8F89%u4E30%u80A1%u4EFD%2Ca-sz-002458-%u76CA%u751F%u80A1%u4EFD%2Ca-sz-000615-%u4EAC%u6C49%u80A1%u4EFD%2Ca-sh-601398-%u5DE5%u5546%u94F6%u884C%2Ca-sh-601577-%u957F%u6C99%u94F6%u884C%2Ca-sz-002948-%u9752%u5C9B%u94F6%u884C%2Ca-sz-000651-%u683C%u529B%u7535%u5668%2Ca-sz-002075-%u6C99%u94A2%u80A1%u4EFD%2Ca-sz-000932-%u534E%u83F1%u94A2%u94C1%2Ca-sz-300104-%u4E50%u89C6%u7F51%2Ca-sh-603305-%u65ED%u5347%u80A1%u4EFD',
    '__guid': '41353141.1145764407078476400.1605601056797.9084',
    'EMFUND1': 'null',
    'EMFUND2': 'null',
    'EMFUND3': 'null',
    'EMFUND4': 'null',
    'EMFUND5': 'null',
    'EMFUND6': 'null',
    'EMFUND7': 'null',
    'qgqp_b_id': '10cff73dbfe1d89e1ae2accf1bd69820',
    'EMFUND0': 'null',
    'EMFUND8': '03-08%2017%3A55%3A43@%23%24%u6613%u65B9%u8FBE%u4E0A%u8BC150%u589E%u5F3AA@%23%24110003',
    'ASP.NET_SessionId': 'bfgbzgfpspgvks3vt5ybbprx',
    'st_si': '46448399938903',
    'st_asi': 'delete',
    'monitor_count': '7',
    'st_pvi': '67980443940531',
    'st_sp': '2018-09-21%2009%3A10%3A49',
    'st_inirUrl': 'https%3A%2F%2Fwww.baidu.com%2Flink',
    'st_sn': '7',
    'st_psi': '20210315140331255-0-0163083037',
}

headers = {
    'Connection': 'keep-alive',
    'Pragma': 'no-cache',
    'Cache-Control': 'no-cache',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'Sec-Fetch-Site': 'none',
    'Sec-Fetch-Mode': 'navigate',
    'Sec-Fetch-User': '?1',
    'Sec-Fetch-Dest': 'document',
    'Accept-Language': 'zh-CN,zh;q=0.9',
}



#讀取表格內的基金代碼
def code():
    wb = xlrd.open_workbook('更新數據.xlsx')# 打開Excel文件
    data = wb.sheet_by_name('Sheet1')#通過excel表格名稱(rank)獲取工作表
    b=data.col_values(1)#獲取第一列數據(數組)
    list=[]
    for c in b[1:]:#for循環,排除第一行數據
        d=int(c)
        s="%06d" % d#股票代碼一共有6位,常規打印無法打印出首位帶0的代碼的0部分,補齊缺失的0
        #print(s)
        list.append(s)
    return(list)
code=code()

def data(cookies,headers,code):
    for num in code:
        response = requests.get('https://fundf10.eastmoney.com/jjjz_'+num+'.html', headers=headers, cookies=cookies)
        response.encoding = 'utf-8' #處理編碼得步驟
        response = response.text

        #獲取基金名稱及代碼
        name = re.findall('<title>(.+?)基金歷史淨值 _ 基金檔案 _ 天天基金網</title>', response, re.S)

        #獲取盤中估值
        valueD = re.findall('<span id="fund_gsz" class="grn lar bold guzhi">(.+?)</span>', response, re.S)
        if len(valueD)>0: #如果返回值長度大於0,即可理解爲當天是跌,value從valueD取值
            GUZHI = valueD
        else:            #否則,即可理解爲當天是漲,value從valueZ取值
            valueZ = re.findall('<span id="fund_gsz" class="red lar bold guzhi">(.+?)</span>', response, re.S)#當天淨值爲漲
            GUZHI = valueZ


        #獲取盤中漲跌幅
        valueG = re.findall('<span id="fund_gszf" class="grn lar bold ">(.+?)</span>', response, re.S)
        if len(valueG)>0: #如果返回值長度大於0,即可理解爲當天是跌,value從valueD取值
            ZHANGDIE = valueG
        else:            #否則,即可理解爲當天是漲,value從valueZ取值
            valueZ = re.findall('<span id="fund_gszf" class="red lar bold ">(.+?)</span>', response, re.S)#當天淨值爲漲
            ZHANGDIE = valueZ

            
        #print(str(name[0]))
        #print("當前估值" + str(GUZHI[0]))
        #print("盤中漲跌" + ZHANGDIE[0])
        #print("......................")

        qmsg_code = 'https://qmsg.zendee.cn/send/key?msg='
        jj = qmsg_code + str(name[0]) + '\n' +"當前估值" + str(GUZHI[0]) + '\n' + "盤中漲跌" + ZHANGDIE[0]
        message_send = requests.get(jj)
        print(str(name[0])+'發送成功')

        
data(cookies,headers,code)


#time.sleep(30)

 

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