先从深交所开始:直接上传源码:

from bs4 import BeautifulSoup
from lxml import etree
import pandas as pd
import akshare as ak
import datetime
import requests
import csv
from contextlib import closing
import time
from urllib.request import urlopen
import requests
from urllib import request
from io import BytesIO
import gzip
import random#设定获取数据的日期
date = ak.tool_trade_date_hist_sina()
date =date.loc[date['trade_date']>='2019-01-01']
df1 = pd.DataFrame()for j in date['trade_date']:print(j)#session = requests.Session()# s = datetime.datetime.strptime(j,'%Y-%m-%d').strftime('%Y%m')# s2 = datetime.datetime.strptime(j,'%Y-%m-%d').strftime('%d')#url = 'http://www.szse.com/api/report/ShowReport?SHOWTYPE=xlsx&CATALOGID=option_hyfxzb&TABKEY=tab1&txtSearchDate=%(j)s&random=%(r)s'%{'j':j,'r':random.random()}#'http://query.sse.com.cn/derivative/downloadRisk.do?trade_date=%(YM)s%(D)s&productType=0'%{'YM':s,'D':s2}url = 'http://www.szse.cn/api/report/ShowReport?SHOWTYPE=xlsx&CATALOGID=option_hyfxzb&TABKEY=tab1&txtSearchDate=%(j)s&random=0.5379373345285146'%{'j':j}print(url)response = requests.get(url)#print(response.content)
"""
这一块本人很不满意,先保存再读取,多此一举。主要是因为直接显示发现乱码,本人无论如何都无法解析为正常结果,
只能先放到xlsx,之后重新读取保存。请诸位大虾见到给小弟一点帮助,如何解决。多谢!!!!!!!!!!
""""with open('D:/结果存放3.xlsx', 'ab') as file_handle:  file_handle.write(response.content)  # 写入# file_handle.write('\n')df= pd.read_excel('D:/结果存放3.xlsx')df['trade_date'] = jdf1 = df1.append(df)df1.to_csv('szse.csv')

爬取上交所

import csv
from contextlib import closing
import time
from urllib.request import urlopen
date = ak.tool_trade_date_hist_sina()
date =date.loc[date['trade_date']>='2019-01-01']
df1 = pd.DataFrame()
#//query.sse.com.cn/derivative/downloadRisk.do?trade_date=20201207&productType=0
for j in date['trade_date']:s = datetime.datetime.strptime(j,'%Y-%m-%d').strftime('%Y%m')s2 = datetime.datetime.strptime(j,'%Y-%m-%d').strftime('%d')url = 'http://query.sse.com.cn/derivative/downloadRisk.do?trade_date=%(YM)s%(D)s&productType=0'%{'YM':s,'D':s2}# 读取数据with closing(requests.get(url, stream=True)) as r:f = (line.decode('gbk') for line in r.iter_lines())reader = csv.reader(f,delimiter=',', quotechar=',')for row in reader:print(row)#print(row.reverse())df = pd.DataFrame(row)df1=df1.append(df.T)df1.to_csv('sse.csv')

爬取中金所

import datetime
import requests
from lxml import etree
import pandas as pd
import akshare as ak
import time
date = ak.tool_trade_date_hist_sina()
date =date.loc[date['trade_date']>='2019-01-01']
df1 = pd.DataFrame()
for j in date['trade_date']:s = datetime.datetime.strptime(j,'%Y-%m-%d').strftime('%Y%m')s2 = datetime.datetime.strptime(j,'%Y-%m-%d').strftime('%d')url = 'http://www.cffex.com.cn/sj/hqsj/rtj/%(YM)s/%(D)s/index.xml?id=39'%{'YM':s,'D':s2}response = requests.get(url)p = etree.HTML((response.content))df = pd.DataFrame()for i in range(1,len(p.xpath('//dailydata'))):#print('//dailydata[{}]/instrumentid/text()'.format(i))# print(p.xpath('//dailydata[{}]/instrumentid/text()'.format(i)))#df.loc[i,'instrument']=p.xpath('//dailydata[{}]/instrumentid/text()'.format(i))try:#print((p.xpath('//dailydata[{}]/instrumentid[1]/text()'))[i])df.loc[i,'instrumentid']=(p.xpath('//dailydata[{}]/instrumentid/text()'.format(i)))except:df.loc[i,'instrumentid']=0try:df.loc[i,'tradingday']=(p.xpath('//dailydata[{}]/tradingday/text()'.format(i)))except:df.loc[i,'tradingday']=0try:df.loc[i,'openprice']=(p.xpath('//dailydata[{}]/openprice/text()'.format(i)))except:df.loc[i,'openprice']=0try:df.loc[i,'highestprice']=(p.xpath('//dailydata[{}]/highestprice/text()'.format(i)))except:df.loc[i,'highestprice'] =0try:df.loc[i,'lowestprice']=(p.xpath('//dailydata[{}]/lowestprice/text()'.format(i)))except:df.loc[i,'lowestprice']=0try:df.loc[i,'closeprice']=(p.xpath('//dailydata[{}]/closeprice/text()'.format(i)))except:df.loc[i,'closeprice'] = 0try:df.loc[i,'preopeninterest']=(p.xpath('//dailydata[{}]/preopeninterest/text()'.format(i)))except:df.loc[i,'preopeninterest'] = 0try:df.loc[i,'openinterest']=(p.xpath('//dailydata[{}]/openinterest/text()'.format(i)))except:df.loc[i,'openinterest'] = 0try:df.loc[i,'presettlementprice']=(p.xpath('//dailydata[{}]/presettlementprice/text()'.format(i)))except:df.loc[i,'presettlementprice'] = 0try:df.loc[i,'settlementpriceif']=(p.xpath('//dailydata[{}]/settlementpriceif/text()'.format(i)))except:df.loc[i,'settlementpriceif'] = 0try:df.loc[i,'settlementprice']=(p.xpath('//dailydata[{}]/settlementprice/text()'.format(i)))except:df.loc[i,'settlementprice'] = 0try:df.loc[i,'volume']=(p.xpath('//dailydata[{}]/volume/text()'.format(i)))except:df.loc[i,'volume'] = 0try:df.loc[i,'turnover']=(p.xpath('//dailydata[{}]/turnover/text()'.format(i)))except:df.loc[i,'turnover'] = 0try:df.loc[i,'productid']=(p.xpath('//dailydata[{}]/productid/text()'.format(i)))except:df.loc[i,'productid'] = 0try:df.loc[i,'delta']=(p.xpath('//dailydata[{}]/delta/text()'.format(i)))except:df.loc[i,'delta'] = 0try:df.loc[i,'expiredate']=(p.xpath('//dailydata[i]/expiredate/text()'.format(i)))except:df.loc[i,'expiredate'] = 0df1 = df1.append(df)df1.to_csv('cffex.csv')

以上是爬取三大交易所期权数据的源代码,可以直接使用,也可以修改保存至数据库。

爬虫——————爬取中金所,深交所,上交所期权数据相关推荐

  1. python爬虫可以爬取哪些有用的东西_有哪些网站用爬虫爬取能得到很有价值的数据?...

    有哪些网站用爬虫爬取能得到很有价值的数据? 题主是个web程序员,最近想转去做数据分析,先练习的爬虫(python),各种爬取技巧以及多网站爬取等已经掌握,但发现转方向最无奈的是方向(要抓什么数据来干 ...

  2. 每日一练:Python爬虫爬取全国新冠肺炎疫情数据实例详解,使用beautifulsoup4库实现

    Python 爬虫篇 - 爬取全国新冠肺炎疫情数据实例详解 效果图展示 第一章:疫情信息的下载与数据提取 ① 爬取页面数据到本地 ② json 字符串正则表达式分析 ③ 提取数据中的 json 字符串 ...

  3. 利用爬虫爬取看看豆网站站的数据信息

    其实很早我就开始关注爬虫技术,这两天特别学习了一下,并且做了一个简单的demo.爬取了看看豆网站的数据信息.总共11751本书,爬取了不到3个小时,基本每秒爬取1条.速度慢的原因主要是单线程,使用my ...

  4. 网络爬虫-爬取指定城市空气质量检测数据

    爬取指定城市空气质量检测数据 网站链接 → https://www.aqistudy.cn/historydata/ 以月数据为例,见下图: 然后我们通过console调试可以发现 这个网页在item ...

  5. 一、网络爬虫----爬取豆瓣网前250条数据

    一.爬虫的基本流程 发起请求 通过HTTP库向目标站点发起请求,也就是发送一个Request,请求可以包含额外的header等信息,等待服务器响应 获取响应内容 如果服务器能正常响应,会得到一个Res ...

  6. python爬虫爬取使用Ajax请求的网站数据解析——以梅老板微博为例(m.weibo.cn)

    文章目录 前言 什么是Ajax Ajax基本原理 发送请求 解析内容 渲染网页 Ajax分析方法 查看请求 过滤请求 Ajax结果提取 1.分析请求(since_id解析) 2.分析响应 3.爬取微博 ...

  7. python爬虫爬取腾讯网站——实时疫情数据并生成Excel表格

    一.基本介绍: 开发背景:自从2020年新冠疫情发生后,至今为止的相关疫情数据新闻已经是非常的巨大了,我们无时不在在用数据尝试帮助我们解剖全球的疫情状况.由此可见,新冠疫情数据的新闻报道数量与国内疫情 ...

  8. [爬虫] 爬取高德地图的面状数据存为shp - 公园数据为例

    爬取的数据仅用于科研 爬取的接口就不讲解了,代码中有 代码写于2017年9月,代码时效性差 [2019年8月6日更新] 这个接口还可以使用,但是高德地图实行了反爬机制,很容易被禁(如下图) [解除禁止 ...

  9. 有哪些网站用爬虫爬取能得到很有价值的数据

    0.IT桔子和36Kr在专栏文章中(http://zhuanlan.zhihu.com/p/20714713),抓取IT橘子和36Kr的各公司的投融资数据,试图分析中国各家基金之间的互动关系. 1.知 ...

最新文章

  1. 魔兽世界10月15日服务器维护,《魔兽世界》怀旧服将于10月15日开放新服务器
  2. Request转发---应用
  3. smb服务器配置过程遇到错误及解决
  4. 随想录(怎么用source insight阅读kernel代码)
  5. 六级词汇打卡第五天(五)
  6. net软件安装后不能卸载的解决方法
  7. Illustrator 教程,如何在 Illustrator 中连接路径?
  8. Flutter之播放视频
  9. 洛谷2863 [Usaco06JAN]牛的舞会
  10. 51nod 1791 合法括号子段
  11. 自己挖坑自己跳 之JsonMappingException: (was java.lang.NullPointerException) (through reference chain:)...
  12. 递归算法和经典递归例子
  13. 深入Flutter(四) Infinite scrolling -- 无限滚动
  14. matlab 噪声检测,噪声环境下的信号检测及其matlab仿真 signal detection and matlab simulation in noise environment.pdf...
  15. NLP Stemming与Lemmatization的区别
  16. 【网络问题】微软商店无法打开:重试该操作,无法加载页面。请稍后重试
  17. 如何使用内存法实现图片的浮雕出来_ps修图改字:制作逼真皮革艺术文字图片的PS教程...
  18. Altium_Designer(protel_DXP)英文菜单汉化对应表表
  19. 20级计算机应用数学试题,计算机等级考试试题试卷及答案.doc
  20. # 如何在Git上更改本地分支名称和远程分支名称

热门文章

  1. 《深入理解JVM.2nd》笔记(一):走进Java
  2. 使用引用的方式交换数据的数值
  3. 专访Google数据科学家彭晨:大数据成为潮流走近各行各业!
  4. 程序员的思考--终于确定了自己的技术发展方向
  5. RuntimeException 和 Exception 区别、异常的子父级关系
  6. IDEA 2018 集成 MyBatis Generator 插件 详解、代码生成
  7. uni-app—从安装到卸载
  8. Prime Distance POJ - 2689 线性筛
  9. appium更新到1.8.2,不能打开运行的解决办法
  10. Codeforces 899D Shovel Sale