brandnewen
2021-05-23 21:33
采纳率: 0%
浏览 22

想用xlwings导入到excel表格里,这段用openpyxl代码该怎么改呢?谢谢。

主要就是openpyxl使用的 sheet.append([daimas[i],names[i],zuixinjias[i],zhangdiefus[i],zhangdiees[i],

                          chengjiaoliangs[i],chengjiaoes[i],zhenfus[i],zuigaos[i],zuidis[i],

                          jinkais[i],zuoshous[i],liangbis[i],huanshoulvs[i],shiyinglvs[i]])

来不断循环加入,然后最后存入excel里。

那如果要用xlwings呢,该怎么改append这个循环呢?谢谢。

试了好久如下,没成功

arrtemp.append([daimas[i],names[i],zuixinjias[i],zhangdiefus[i],zhangdiees[i],

                          chengjiaoliangs[i],chengjiaoes[i],zhenfus[i],zuigaos[i]])

 arr.append(arrtemp)

 

源代码如下:

from typing import Mapping, MappingView

import requests

import re

import time

import random

import openpyxl

 

def main():

    headers = {

        'Connection': 'keep-alive',

        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36',

        'Accept': '*/*',

        'Referer': 'http://quote.eastmoney.com/',

        'Accept-Language': 'zh-CN,zh;q=0.9',

    }

    # range里 第2个数字如果是2代表打开第一页,如果是3,是打开第二页

    for page in range(1,2):

        params = (

            ('cb', 'jQuery112406937150361480255_1621584221831'),

            ('pn', str(page)),

            ('pz', '20'),

            ('po', '1'),

            ('np', '1'),

            ('ut', 'bd1d9ddb04089700cf9c27f6f7426281'),

            ('fltt', '2'),

            ('invt', '2'),

            ('fid', 'f3'),

            ('fs', 'm:0 t:6,m:0 t:13,m:0 t:80,m:1 t:2,m:1 t:23'),

            ('fields', 'f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152'),

        )

 

        response = requests.get('http://73.push2.eastmoney.com/api/qt/clist/get', headers=headers, params=params)

        #利用re.findall函数找到以下格式,注意如果要找源代码里的   "f12":"002761",   里面的002761,那么就是daimas = re.findall('"f12":"(.*?)",',response.text)

        daimas = re.findall('"f12":"(.*?)",',response.text)

        names = re.findall('"f14":"(.*?)"',response.text)

        zuixinjias = re.findall('"f2":(.*?),',response.text)

        zhangdiefus = re.findall('"f3":(.*?),',response.text)

        zhangdiees = re.findall('"f4":(.*?),',response.text)

        chengjiaoliangs = re.findall('"f5":(.*?),',response.text)

        chengjiaoes = re.findall('"f6":(.*?),',response.text)

        zhenfus = re.findall('"f7":(.*?),',response.text)

        zuigaos = re.findall('"f15":(.*?),',response.text)

        zuidis = re.findall('"f16":(.*?),',response.text)

        jinkais = re.findall('"f17":(.*?),',response.text)

        zuoshous = re.findall('"f18":(.*?),',response.text)

        liangbis = re.findall('"f10":(.*?),',response.text)

        huanshoulvs = re.findall('"f8":(.*?),',response.text)

        shiyinglvs = re.findall('"f9":(.*?),',response.text)

        

        # 注明:以下循环是个小循环,在上面的页面大循环里的。每次找到一个页面,循环20次,也就是每个分页面是20个股票。

        for i in range(20):

            sheet.append([daimas[i],names[i],zuixinjias[i],zhangdiefus[i],zhangdiees[i],

                          chengjiaoliangs[i],chengjiaoes[i],zhenfus[i],zuigaos[i],zuidis[i],

                          jinkais[i],zuoshous[i],liangbis[i],huanshoulvs[i],shiyinglvs[i]])

 

        time.sleep(random.randint(2,4))

 

if __name__ == '__main__':

    wb = openpyxl.Workbook()

    sheet = wb.active

    sheet['A1'] = '代码'

    sheet['B1'] = '名称'

    sheet['C1'] = '最新价'

    sheet['D1'] = '涨跌幅'

    sheet['E1'] = '涨跌额'

    sheet['F1'] = '成交量'

    sheet['G1'] = '成交额'

    sheet['H1'] = '振幅'

    sheet['I1'] = '最高'

    sheet['J1'] = '最低'

    sheet['K1'] = '今开'

    sheet['L1'] = '昨收'

    sheet['M1'] = '量比'

    sheet['N1'] = '换手率'

    sheet['O1'] = '市盈率'

    main()

    # 只能存为XLSX,不能存xlsm,否则文件打开出错

    wb.save('eastmoney.xlsx')

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

  • String name="小吴"; 2021-05-23 23:27

    用代码段不行吗?这样好难看,

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题