主要就是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')
用代码段不行吗?这样好难看,