百度股市通获取指定股票盘口数据
以英洛华这只股票为采集对象,6月6日今开值为6.92,完整链接:https://gushitong.baidu.com/opendata?openapi=1&dspName=iphone&tn=tangram&client=app&query=600171&code=600171&word=600171&resource_id=5429&ma_ver=4&finClientType=pc
按F12刷新浏览器,重新请求,查找获取数据的请求信息,起初以为数据是存储在这个请求里的,但是一直找不到对应的数据,比如“今开”值
然后通过搜索,查询返回值,获得包含该返回值的请求信息,最终找到真正的请求
正确的请求地址打开后返回一串json数据,且数据是比较多的,需要逐步筛查
在预览模式下,找到了目标数据段
然后就是书写json表达式,获取数据
“['Result'][1]['DisplayData']['resultData']['tplData']['result']['minute_data']['pankouinfos']['origin_pankou']”
脚本执行后可返回,可对里面的数据进一步提取
完整python脚本
import requests import json cookies = { 'PSTM': '1635248519', 'BIDUPSID': '90EF3BD78F53BC8C96DF84CD3854CA2D', '__yjs_duid': '1_cd247776bc887ee300105fb75c8c2a331635258445589', 'BDUSS': '1oWEtxQkpPR25ySTgtSHRHb0JOR2VXcm12MEk4V3ZBZ2VkOWZSVFI2QTBlWE5pRVFBQUFBJCQAAAAAAAAAAAEAAACRJsY-cGlwacnxu7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTsS2I07EticS', 'BDUSS_BFESS': '1oWEtxQkpPR25ySTgtSHRHb0JOR2VXcm12MEk4V3ZBZ2VkOWZSVFI2QTBlWE5pRVFBQUFBJCQAAAAAAAAAAAEAAACRJsY-cGlwacnxu7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTsS2I07EticS', 'BDORZ': 'B490B5EBF6F3CD402E515D22BCDA1598', 'MCITY': '-158%3A', 'BA_HECTOR': '8h242g8hah002l0g0g1h9pekn15', 'ZFY': 'uYCFmlJSV5rn3KHYBSLi6naqucpmiTVS5c4ql8gHf3c:C', 'BAIDUID_V4': '59DEA2219CA3CC71798923390803C00A:FG=1', 'RT': '"z=1&dm=baidu.com&si=xgb0bofv4d&ss=l41exipa&sl=3&tt=jbz&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ld=12pi&ul=1jdc&hd=1jej"', 'BDRCVFR[feWj1Vr5u3D]': 'I67x6TjHwwYf0', 'delPer': '0', 'PSINO': '2', 'BAIDUID_BFESS': '488CA1A354CAFF05B0D67E0E09E83335:FG=1', 'H_PS_PSSID': '36426_36549_36465_36455_36512_36452_36167_36488_36517_36074_36519_26350_36467_36314', 'BAIDUID': 'B0C47089A4FF26A4CB78746AB1FD2529:FG=1', 'Hm_lvt_c8bd3584daa59ca83c2ec1247d343576': '1654438355,1654506317', 'Hm_lpvt_c8bd3584daa59ca83c2ec1247d343576': '1654506958', } headers = { 'Connection': 'keep-alive', 'Cache-Control': 'max-age=0', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; 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', # Requests sorts cookies= alphabetically # 'Cookie': 'PSTM=1635248519; BIDUPSID=90EF3BD78F53BC8C96DF84CD3854CA2D; __yjs_duid=1_cd247776bc887ee300105fb75c8c2a331635258445589; BDUSS=1oWEtxQkpPR25ySTgtSHRHb0JOR2VXcm12MEk4V3ZBZ2VkOWZSVFI2QTBlWE5pRVFBQUFBJCQAAAAAAAAAAAEAAACRJsY-cGlwacnxu7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTsS2I07EticS; BDUSS_BFESS=1oWEtxQkpPR25ySTgtSHRHb0JOR2VXcm12MEk4V3ZBZ2VkOWZSVFI2QTBlWE5pRVFBQUFBJCQAAAAAAAAAAAEAAACRJsY-cGlwacnxu7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTsS2I07EticS; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; MCITY=-158%3A; BA_HECTOR=8h242g8hah002l0g0g1h9pekn15; ZFY=uYCFmlJSV5rn3KHYBSLi6naqucpmiTVS5c4ql8gHf3c:C; BAIDUID_V4=59DEA2219CA3CC71798923390803C00A:FG=1; RT="z=1&dm=baidu.com&si=xgb0bofv4d&ss=l41exipa&sl=3&tt=jbz&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ld=12pi&ul=1jdc&hd=1jej"; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; delPer=0; PSINO=2; BAIDUID_BFESS=488CA1A354CAFF05B0D67E0E09E83335:FG=1; H_PS_PSSID=36426_36549_36465_36455_36512_36452_36167_36488_36517_36074_36519_26350_36467_36314; BAIDUID=B0C47089A4FF26A4CB78746AB1FD2529:FG=1; Hm_lvt_c8bd3584daa59ca83c2ec1247d343576=1654438355,1654506317; Hm_lpvt_c8bd3584daa59ca83c2ec1247d343576=1654506958', } params = { 'openapi': '1', 'dspName': 'iphone', 'tn': 'tangram', 'client': 'app', 'query': '600171', 'code': '600171', 'word': '600171', 'resource_id': '5429', 'ma_ver': '4', 'finClientType': 'pc', } response = requests.get('https://gushitong.baidu.com/opendata', params=params, cookies=cookies, headers=headers).text jsonobj = json.loads(response) toCntPercent = jsonobj['Result'][1]['DisplayData']['resultData']['tplData']['result']['minute_data']['pankouinfos']['origin_pankou'] print(toCntPercent)
把脚本升级一下,从execl中读取股票代码,然后把爬去到的数据写到execl中
直接贴代码
from subprocess import list2cmdline import requests import json import openpyxl import xlrd cookies = { 'PSTM': '1635248519', 'BIDUPSID': '90EF3BD78F53BC8C96DF84CD3854CA2D', '__yjs_duid': '1_cd247776bc887ee300105fb75c8c2a331635258445589', 'BDUSS': '1oWEtxQkpPR25ySTgtSHRHb0JOR2VXcm12MEk4V3ZBZ2VkOWZSVFI2QTBlWE5pRVFBQUFBJCQAAAAAAAAAAAEAAACRJsY-cGlwacnxu7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTsS2I07EticS', 'BDUSS_BFESS': '1oWEtxQkpPR25ySTgtSHRHb0JOR2VXcm12MEk4V3ZBZ2VkOWZSVFI2QTBlWE5pRVFBQUFBJCQAAAAAAAAAAAEAAACRJsY-cGlwacnxu7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTsS2I07EticS', 'BDORZ': 'B490B5EBF6F3CD402E515D22BCDA1598', 'MCITY': '-158%3A', 'BA_HECTOR': '8h242g8hah002l0g0g1h9pekn15', 'ZFY': 'uYCFmlJSV5rn3KHYBSLi6naqucpmiTVS5c4ql8gHf3c:C', 'BAIDUID_V4': '59DEA2219CA3CC71798923390803C00A:FG=1', 'RT': '"z=1&dm=baidu.com&si=xgb0bofv4d&ss=l41exipa&sl=3&tt=jbz&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ld=12pi&ul=1jdc&hd=1jej"', 'BDRCVFR[feWj1Vr5u3D]': 'I67x6TjHwwYf0', 'delPer': '0', 'PSINO': '2', 'BAIDUID_BFESS': '488CA1A354CAFF05B0D67E0E09E83335:FG=1', 'H_PS_PSSID': '36426_36549_36465_36455_36512_36452_36167_36488_36517_36074_36519_26350_36467_36314', 'BAIDUID': 'B0C47089A4FF26A4CB78746AB1FD2529:FG=1', 'Hm_lvt_c8bd3584daa59ca83c2ec1247d343576': '1654438355,1654506317', 'Hm_lpvt_c8bd3584daa59ca83c2ec1247d343576': '1654506958', } headers = { 'Connection': 'keep-alive', 'Cache-Control': 'max-age=0', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; 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 获取股票列股票代码(): wb = xlrd.open_workbook('股票计划.xlsx')# 打开Excel文件 data = wb.sheet_by_name('爬虫数据')#通过excel表格名称(rank)获取工作表 b=data.col_values(2)#获取第三列数据(数组) list=[] for c in b[1:]:#for循环,排除第一行数据 d=int(c) s="%06d" % d#股票代码一共有6位,常规打印无法打印出首位带0的代码的0部分,补齐缺失的0 list.append(s) return(list) code=获取股票列股票代码() print("读取代码列表成功") def 获取股票信息(code,cookies,headers): 今开list = [] 最高list = [] 昨收list = [] 今日收盘list = [] for num in code: params = { 'openapi': '1', 'dspName': 'iphone', 'tn': 'tangram', 'client': 'app', 'query': ''+num+'', 'code': ''+num+'', 'word': ''+num+'', 'resource_id': '5429', 'ma_ver': '4', 'finClientType': 'pc', } response = requests.get('https://gushitong.baidu.com/opendata', params=params, cookies=cookies, headers=headers).text jsonobj = json.loads(response) origin_pankou = jsonobj['Result'][1]['DisplayData']['resultData']['tplData']['result']['minute_data']['pankouinfos']['origin_pankou'] 今开 = origin_pankou['open'] 最高 = origin_pankou['high'] 昨收 = origin_pankou['preClose'] 今日收盘 = origin_pankou['currentPrice'] 今开list.append(今开) 最高list.append(最高) 昨收list.append(昨收) 今日收盘list.append(今日收盘) 数据list = list(zip(今开list,最高list,昨收list,今日收盘list)) return(数据list) data = 获取股票信息(code,cookies,headers) print("获取股票数据成功") def 保存数据(data): xfile = openpyxl.load_workbook('股票计划.xlsx') sheet1 = xfile.worksheets[0] for i in range(len(data)): sheet1.cell(i+2, 6).value=data[i][0]#今开 sheet1.cell(i+2, 7).value=data[i][1]#最高 sheet1.cell(i+2, 5).value=data[i][2]#昨收 sheet1.cell(i+2, 8).value=data[i][3]#今日收盘 xfile.save('股票计划.xlsx') 保存数据(data) print("成功保存股票数据到文档")