m0_72183621 2022-06-20 16:40 采纳率: 21.7%
浏览 174
已结题

vscode调试js加密代码

img


爬取url:https://finance.sina.com.cn/realstock/company/sh600835/nc.shtml
要求
js调试文件和怎么找到加密数据的截几张步骤
说明图,一起压缩发到这个邮箱,这个邮箱是yx13235480522@163.com

  • 写回答

2条回答 默认 最新

  • 溪风沐雪 2022-06-20 17:24
    关注

    我估计你是理解错了,你需要的数据并不需要解密js,现在给一个解决方案,你可以直接用:
    基本思路是:csv文件不存在则创建带表头的csv文件,然后读取成dadaframe数据,通过接口读取你需要的数据,解析后存到dadaframe中,其中我增加了时间判断,只有在开盘时间段内读取的数据才会存起来,如果时间过了下午3点,则停止程序,如果要读取多天数据,可以在第二天9点前再运行程序,数据格式参考表头设计。

    import requests
    import execjs
    import pandas as pd
    import os
    import time
    import numpy as np
    from datetime import datetime as dt
    
    filename = 'shjd.csv' #定义存储文件名称,建议每个时间段存为不同的名称,后期再合并,可以防止数据丢失
    if not os.path.exists(filename): #判断文件是否存在,不存在则创建
        #创建df文件,添加表头
        df = pd.DataFrame(columns=['时间','成交价', 
                                    '卖⑤(成交价)', '卖⑤(成交量)', 
                                    '卖④(成交价)', '卖③(成交量)',
                                    '卖③(成交价)', '卖②(成交量)',
                                    '卖②(成交价)', '卖①(成交量)', 
                                    '卖①(成交价)', '卖①(成交量)',
                                    '买⑤(成交价)', '买⑤(成交量)',
                                    '买④(成交价)', '买④(成交量)', 
                                    '买③(成交价)', '买③(成交量)',
                                    '买②(成交价)', '买②(成交量)', 
                                    '买①(成交价)', '买①(成交量)'])
        df.index.name = '序号' #指定索引列名称
        df.to_csv(filename,encoding='GBK') #保存csv文件
    df = pd.read_csv(filename,index_col='序号',encoding='GBK') #读取csv文件
    index = df.index #读取索引
    codes = "sh600835,sh600835_i,sh900925,RMBUSD,bk_new_jtys" #股票代码
    headers = {'referer': 'http://finance.sina.com.cn'} #设置请求头
    t = time.time() #计算当前时间
    try:
        while True:
            resp = requests.get('http://hq.sinajs.cn/list=' + codes, headers=headers, timeout=6) #发送请求,获取数据
            data = resp.text #取返回数据的内容
            docjs = execjs.compile(data) #用execjs编译返回的js代码
            res = docjs.eval('hq_str_sh600835') #取js代码中的hq_str_sh600835变量数据
            infos = res.split(',') #分割数据
            datetime = infos[-4]+' '+infos[-3] #取时间数据组成数据时间
            #判断当前时间是否开盘
            if dt.strptime(infos[-4]+' 09:00:00', '%Y-%m-%d %H:%M:%S')<dt.now()<dt.strptime(infos[-4]+' 11:30:00', '%Y-%m-%d %H:%M:%S') or dt.strptime(infos[-4]+' 13:00:00', '%Y-%m-%d %H:%M:%S')<dt.now()<dt.strptime(infos[-4]+' 15:00:00', '%Y-%m-%d %H:%M:%S'):
                data = infos[-24:-4] #取买卖数据
                data = data[::-1] #反序
                data = [round(float(data[i]), 2) if i%2==0 else int(data[i])//100 for i in range(len(data))] #成交价保留两位小数,成交数量除以100
                row = np.hstack(([datetime, round(float(infos[7]),2)],data)) #把时间,成交数据,以及买卖数据组成一个数组
                df.loc[df.iloc[:,0].size] = row #在df数据中添加一行
                if time.time()-t>600: #每隔10分钟存一次数据
                    df.to_csv(filename,encoding='GBK')
                    t = time.time()
            time.sleep(3) #等待3秒
            if dt.now()>dt.strptime(infos[-4]+' 15:00:00', '%Y-%m-%d %H:%M:%S'): #如果时间到了下午15点以后,存储数据,并停止程序
                df.to_csv(filename,encoding='GBK')
                break
    except: #如果中途停止程序或者程序出错,保存当前数据
        df.to_csv(filename,encoding='GBK')
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月21日
  • 已采纳回答 6月21日
  • 修改了问题 6月20日
  • 修改了问题 6月20日
  • 展开全部

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?