爬蟲——————爬取中金所,深交所,上交所期權數據

先從深交所開始:直接上傳源碼:

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')

以上是爬取三大交易所期權數據的源代碼,可以直接使用,也可以修改保存至數據庫。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449820.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449820.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449820.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux下的C語言開發

linux下的C語言開發(開篇) 在很多人的眼里,C語言和linux常常是分不開的。這其中的原因很多,其中最重要的一部分我認為是linux本身就是C語言的杰出作品。當然,linux操作系統本身對C語言的支持也是相當到位的。作為一個…

sql語法學習

本人數據庫目前使用的是sql,主要是使用python語言,然后用pandas調用(真的很方便)。所以就總結一下,也為自己以后調用數據查找方便使用。 導入包 from sqlalchemy import create_engine import pymssql連接數據庫 con…

C 溫故知新 之 指針:數組指針、字符串指針、函數指針

一、數組指針 1.指向數組元素的指針 1、定義:還是那句話通俗的說指針就是地址   數組指針 :數組的起始地址 數組元素指針:數組元素的地址 2、定義一個指向數組元素的指針變量的方法,與之前介紹的指針變量相同。 例如&#…

mysql 查找配置文件 my.ini 位置方法

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 個人備注:不顯示文件類型時,my.ini 文件名就叫作 my, 文件屬性才顯示 ini。 找到 my 文件看屬性就知…

嵌入式操作系統內核原理和開發

嵌入式操作系統內核原理和開發(開篇) 操作系統是很多人每天必須打交道的東西,因為在你打開電腦的一剎那,隨著bios自檢結束,你的windows系統已經開始運行了。如果問大家操作系統是什么?可能有的人會說操作…

Java中對象比較

在Java之中不僅僅存在兩個數字與兩個字符串之間的比較,還存在兩個對象之間的比較。 眾所周知,兩個數字之間的比較我們使用“”,兩個字符串之間的比較我們使用“equals()”,那么兩個對象之間如何進行比較呢?既然要進行兩…

如何安裝pfbprophet

最近facebook出來了一個軟件包,可以用于時序數據預測,但是安裝上,遇到問題不小,本人也在安裝中遇到大大小小各種問題,然后查了各種資料,進行研究,終于找到一個最簡單的辦法。 不廢話&#xff0…

JeeSite 4.0 (1.0)開發環境部署運行

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 環境要求 1、Java SDK 1.8 下載 2、Eclipse IDE for Java EE Mars 2 (4.5.2) 下載(依Eclipse舉例,IDEA雷同。&…

dojo 七 DOM dojo/dom

官方教程:Dojo DOM Functions對dom的使用,需要引用包dojo/dom。1.獲取節點,dom.byIdbyId中既可以傳遞一個字符串,也可以傳遞一個節點對象 require(["dojo/dom", "dojo/domReady!"], function(dom) {function …

quantaxis中使用docker安裝,出現的問題

本人在使用docker安裝quantaxis時,經常發生docker報錯,原因是與 wsl2沖突。之前不知道原因,直接就是卸載重裝,累死我了。現在知道后,將解決方案記下,幫助后來者繼續前行。 管理員打開cmd,輸入 …

并發編程(多進程1)

一 multiprocessing模塊介紹 python中的多線程無法利用多核優勢,如果想要充分地使用多核CPU的資源(os.cpu_count()查看),在python中大部分情況需要使用多進程。Python提供了multiprocessing。 multiprocessing模塊用來開啟子進…

LInux 下文件包的使用

1 .deb   http://wiki.ubuntu.org.cn/MySQL%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97 2 .rpm

@RequiresPermissions 注解說明

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 RequiresAuthentication 驗證用戶是否登錄,等同于方法subject.isAuthenticated() 結果為true時。 RequiresUser 驗證用戶…

千位分隔符轉換為數字

最近下載了akshare里面的數據,然后發現有些數據格式為1,300這種格式,為str格式,但是又無法直接強制轉換之類方式,特地尋求答案,并做筆記,留待自己與后來者一起避坑。 from locale import * atof(123,456)…

一本通1629聰明的燕姿

1629:聰明的燕姿 時間限制: 1000 ms 內存限制: 524288 KB【題目描述】 城市中人們總是拿著號碼牌,不停尋找,不斷匹配,可是誰也不知道自己等的那個人是誰。 可是燕姿不一樣,燕姿知道自己等的人是誰,…

IT職場人生系列之二十四:程序員如何增加收入

這是IT職場人生系列的第二十四篇。(序言,專欄目錄) 程序員的收入是廣受關注的問題,很多人從業3~5年之后就會遇到這個收入瓶頸。盡管物價不斷上漲,程序員尤其是初、中級程序員的收入不升反降。即使上次在某…

ASP 代碼當前記錄集不支持更新問題的解決辦法。

錯誤類型:ADODB.Recordset (0x800A0CB3)當前記錄集不支持更新。這可能是提供程序的限制,也可能是選定鎖定類型的限制。 /Model/manage/Admin_Admin.asp, 第 35 行 找到放在數據庫文件的--- 右鍵--》屬性---》安全----》添加IIS來賓用戶---》權限為&#…

@PathVariable 注解 說明

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 PathVariable 映射 URL 綁定的占位符 帶占位符的 URL 是 Spring3.0 新增的功能,該功能在SpringMVC 向 REST 目標挺進發展過…

數據清洗,篩選

本人在私募,負責數據收集以及清洗,就是包括收集數據,按照領導要求,選出滿足條件的數據,用于校驗策略是否正確。 現在就在這進行代碼上傳,即用于自己總結整理,也用于供大家學習了解,實…

JS媒體查詢

樣式的改變使用C3的媒體查詢 行為和功能的改變使用JS的媒體查詢 matchMedia()方法參數可寫任何一個CSSmedia規則,返回的是新的MediaQueryList對象,該對象有兩個屬性 media:查詢語句的內容matches:檢查查詢結果,返回boo…