ashanysyn

摘要:笔记记录爬取上期所持仓数据的过程,本次爬取使用的工具是python,使用的IDE是pycharm

 

一、查看网页属性,分析数据结构

  在浏览器中打开上期所网页,按F12或者选择表格文字-右键-审查元素,调出控制台:

  

   在Network中可以看到目标数据:http://www.shfe.com.cn/data/dailydata/kx/pm20190110.dat,其中20190110是数据代表的日期:

 

二、将数据下载到本地文件夹

  1.在pycharm中新建一个python文档,将目标dat文件下载到本地文件夹,需要用到的包可以在CMD控制台中通过 ‘pip install [包名]’ 安装:

 1 import xlwt
 2 import requests
 3 import os
 4 mydate = "20190111"  #指定需要的数据日期
 5 url = "http://www.shfe.com.cn/data/dailydata/kx/pm" + mydate + ".dat"
 6 root = "F://py//SQ//"
 7 path = root + url.split(\'/\')[-1] + ".txt"  #指定下载的目录,保存为txt文件
 8 r = requests.get(url)
 9 with open(path, \'wb\') as f:
10     f.write(r.content)
11     f.close()
12     print("文件保存成功")

 

  2.运行代码后,可以看到文件夹中多了个pm20190111.dat.txt文件,用记事本打开文件,可以看到文件是Json格式的表格,接下来用json包将其解析成python的dataframe格式:

  代码:

1 import json
2 file = open("F://py//SQ//pm" + mydate + ".dat.txt", \'r\', encoding=\'UTF-8\')
3 js = file.read()
4 dic = json.loads(js)
5 file.close()

  3.接下来将数据存储到excel表中,使用的是xlwt包,运行代码,至此,上期所的每日持仓数据已成功爬取:

 1 def WriteExcel(data):
 2     pm = xlwt.Workbook()
 3     sheet = pm.add_sheet(\'Sheet1\', cell_overwrite_ok=True)
 4     title = [\'品种代码\', \'序号\', \'排名\', \'期货公司会员号\', \'会员类别\', \'总成交量\', \'比上交易日增减\', \'期货公司会员号\', \'会员类别\', \'总持买单量\', \'比上交易日增减\', \'期货公司会员号\',
 5              \'会员类别\', \'总持卖单量\', \'比上交易日增减\', \'品种\']
 6     for i in range(len(title)):  # 创建表头
 7         sheet.write(0, i, title[i])
 8     j = 0
 9     for line in data["o_cursor"]:  # 写入数据
10         dataV = list(data["o_cursor"][j].values())
11         j = j + 1
12         for k in range(len(dataV)):
13             if isinstance(dataV[k], str):
14                 dataV[k] = dataV[k].strip()
15             sheet.write(j, k, dataV[k])
16     pm.save("F://py//SQ//demo" + mydate + ".xls")
17 WriteExcel(dic)

 

分类:

技术点:

相关文章: