㈠ 如何用python 爬蟲抓取金融數據
獲取數據是數據分析中必不可少的一部分,而網路爬蟲是是獲取數據的一個重要渠道之一。鑒於此,我拾起了Python這把利器,開啟了網路爬蟲之路。
本篇使用的版本為python3.5,意在抓取證券之星上當天所有A股數據。程序主要分為三個部分:網頁源碼的獲取、所需內容的提取、所得結果的整理。
一、網頁源碼的獲取
很多人喜歡用python爬蟲的原因之一就是它容易上手。只需以下幾行代碼既可抓取大部分網頁的源碼。
為了減少干擾,我先用正則表達式從整個頁面源碼中匹配出以上的主體部分,然後從主體部分中匹配出每隻股票的信息。代碼如下。
pattern=re.compile('<tbody[sS]*</tbody>')
body=re.findall(pattern,str(content)) #匹配<tbody和</tbody>之間的所有代碼pattern=re.compile('>(.*?)<')
stock_page=re.findall(pattern,body[0]) #匹配>和<之間的所有信息
其中compile方法為編譯匹配模式,findall方法用此匹配模式去匹配出所需信息,並以列表的方式返回。正則表達式的語法還挺多的,下面我只羅列所用到符號的含義。
語法 說明
. 匹配任意除換行符「 」外的字元
* 匹配前一個字元0次或無限次
? 匹配前一個字元0次或一次
s 空白字元:[<空格> fv]
S 非空白字元:[^s]
[...] 字元集,對應的位置可以是字元集中任意字元
(...) 被括起來的表達式將作為分組,裡面一般為我們所需提取的內容
正則表達式的語法挺多的,也許有大牛隻要一句正則表達式就可提取我想提取的內容。在提取股票主體部分代碼時發現有人用xpath表達式提取顯得更簡潔一些,看來頁面解析也有很長的一段路要走。
三、所得結果的整理
通過非貪婪模式(.*?)匹配>和<之間的所有數據,會匹配出一些空白字元出來,所以我們採用如下代碼把空白字元移除。
stock_last=stock_total[:] #stock_total:匹配出的股票數據for data in stock_total: #stock_last:整理後的股票數據
if data=='':
stock_last.remove('')
最後,我們可以列印幾列數據看下效果,代碼如下
print('代碼',' ','簡稱',' ',' ','最新價',' ','漲跌幅',' ','漲跌額',' ','5分鍾漲幅')for i in range(0,len(stock_last),13): #網頁總共有13列數據
print(stock_last[i],' ',stock_last[i+1],' ',' ',stock_last[i+2],' ',' ',stock_last[i+3],' ',' ',stock_last[i+4],' ',' ',stock_last[i+5])
㈡ Python 如何爬股票數據
現在都不用爬數據拉,很多量化平台能提供數據介面的服務。像比如基礎金融數據,包括滬深A股行情數據,上市公司財務數據,場內基金數據,指數數據,期貨數據以及宏觀經濟數據;或者Alpha特色因子,技術分析指標因子,股票tick數據以及網路因子數據這些數據都可以在JQData這種數據服務中找到的。
有的供應商還能提供level2的行情數據,不過這種比較貴,幾萬塊一年吧
㈢ python爬蟲一般都爬什麼信息
python爬蟲一般都爬什麼信息?
一般說爬蟲的時候,大部分程序員潛意識里都會聯想為Python爬蟲,為什麼會這樣,我覺得有兩個原因:
1.Python生態極其豐富,諸如Request、Beautiful Soup、Scrapy、PySpider等第三方庫實在強大
2.Python語法簡潔易上手,分分鍾就能寫出一個爬蟲(有人吐槽Python慢,但是爬蟲的瓶頸和語言關系不大)
爬蟲是一個程序,這個程序的目的就是為了抓取萬維網信息資源,比如你日常使用的谷歌等搜索引擎,搜索結果就全都依賴爬蟲來定時獲取
看上述搜索結果,除了wiki相關介紹外,爬蟲有關的搜索結果全都帶上了Python,前人說Python爬蟲,現在看來果然誠不欺我~
爬蟲的目標對象也很豐富,不論是文字、圖片、視頻,任何結構化非結構化的數據爬蟲都可以爬取,爬蟲經過發展,也衍生出了各種爬蟲類型:
● 通用網路爬蟲:爬取對象從一些種子 URL 擴充到整個 Web,搜索引擎乾的就是這些事
● 垂直網路爬蟲:針對特定領域主題進行爬取,比如專門爬取小說目錄以及章節的垂直爬蟲
● 增量網路爬蟲:對已經抓取的網頁進行實時更新
● 深層網路爬蟲:爬取一些需要用戶提交關鍵詞才能獲得的 Web 頁面
不想說這些大方向的概念,讓我們以一個獲取網頁內容為例,從爬蟲技術本身出發,來說說網頁爬蟲,步驟如下:
模擬請求網頁資源
從HTML提取目標元素
數據持久化
相關推薦:《Python教程》以上就是小編分享的關於python爬蟲一般都爬什麼信息的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!
㈣ 如何用python計算某支股票持有90天的收益率
首先你要先獲得這支股票90天的數據,可以存在一個arry中。
然後計算收益率 r = (arry[89]-arry[0])/arry[0],如果要計算任意連續90天的話只要循環就可以了。
許多人更喜歡去做短線,因為短線刺激,無法承受長線持股待漲的煎熬,可是假如不會做短線,則可能會導致虧得更快。做T的秘籍大家一定很想知道,今天就給大家講講。
我准備了好處給大家,機構精選的牛股大盤點!希望大家不要錯過--速領!今日機構牛股名單新鮮出爐!
一、股票做T是什麼意思
現在市場上,A股的交易市場模式是T+1,意思就是今天買的股票,只有明天才能賣出。
而股票做T,當天買入的股票在當天賣出,這就是股票進行T+0的交易操作,投資人在可交易的一天通過股票的漲幅和跌停有了股票差價,在股票大幅下跌時趕緊買入,漲得差不多之後再將買入的部分賣出,就是用這種方法賺錢的。
假如說,在昨天我手裡還有1000股的xx股票,市價10元/股。今天一大早發現該股居然跌到了9.5元/股,然後趁機買入了1000股。結果到了下午時,這只股票的價格就突然間大幅上漲到一股10.5元,我就急忙地以10.5/股的價格售出1000股,然後獲取(10.5-9.5)×1000=1000元的差價,這就是做T。
但是,不是每種股票做T都合適!正常來說,那些日內振幅空間較大的股票,它們是適合去做T的,比如說,每日能有5%的振幅空間。想知道某隻股票適不適合的,點開這里去看一下吧,專業的人員會為你估計挑選出最適合你的T股票!【免費】測一測你的股票到底好不好?
二、股票做T怎麼操作
怎麼才能夠把股票做到T?正常情況下分為兩種方式,分別為正T和倒T。
正T即先買後賣,投資手裡,手裡面賺有這款股票,在當天股票開盤的時候下跌到了最低點時,投資者買入1000股,等到股票變高的時候在高點,將這1000股徹底賣出,持有的總股票數還是跟以前一樣,T+0的效果這樣就能夠達到了,又能夠享有中間賺取的差價。
而倒T即先賣後買。投資者通過嚴密計算得出,股票存在下降風險,因此在高位點先賣出手中的一部分股票,接著等股價回落後再去買進,總量仍舊有辦法保持不變,然而,收益是會產生的。
比方投資者,他佔有該股2000股,而10元/股是當天早上的市場價,覺得持有的股票在短時間內就會有所調整,,於是賣出手中的1500股,等股票跌到一股只需要9.5元時,這只股票差不多就已經能讓他們感到滿意了,再買入1500股,這就賺取了(10-9.5)×1500=750元的差價。
這時有人就問了,那要如何知道買入的時候正好是低點,賣出的時候正好是高點?
其實有一款買賣點捕捉神器,它能夠判斷股票的變化趨勢,絕對能讓你每次都抓住重點,點開鏈接就能立刻領取到了:【智能AI助攻】一鍵獲取買賣機會
應答時間:2021-09-23,最新業務變化以文中鏈接內展示的數據為准,請點擊查看
㈤ 如何用python爬取nba數據中心的數據
爬取的網站為:stat-nba.com,本文爬取的是NBA2016-2017賽季常規賽至2017年1月7日的數據
改變url_header和url_tail即可爬取特定的其他數據。
源代碼如下:
[python]view plain
#coding=utf-8
importsys
reload(sys)
sys.setdefaultencoding('utf-8')
importrequests
importtime
importurllib
frombs4importBeautifulSoup
importre
frompyExceleratorimport*
defgetURLLists(url_header,url_tail,pages):
"""
獲取所有頁面的URL列表
"""
url_lists=[]
url_0=url_header+'0'+url_tail
printurl_0
url_lists.append(url_0)
foriinrange(1,pages+1):
url_temp=url_header+str(i)+url_tail
url_lists.append(url_temp)
returnurl_lists
defgetNBAAllData(url_lists):
"""
獲取所有2017賽季NBA常規賽數據
"""
datasets=['']
foriteminurl_lists:
data1=getNBASingleData(item)
datasets.extend(data1)
#去掉數據里的空元素
foritemindatasets[:]:
iflen(item)==0:
datasets.remove(item)
returndatasets
defgetNBASingleData(url):
"""
獲取1個頁面NBA常規賽數據
"""
QueryType=game&order=1&crtcol=date_out&GameType=season&PageNum=3000&Season0=2016&Season1=2017'
#html=requests.get(url).text
html=urllib.urlopen(url).read()
#printhtml
soup=BeautifulSoup(html)
data=soup.html.body.find('tbody').text
list_data=data.split(' ')
#withopen('nba_data.txt','a')asfp:
#fp.write(data)
#foriteminlist_data[:]:
#iflen(item)==0:
#list_data.remove(item)
returnlist_data
defsaveDataToExcel(datasets,sheetname,filename):
book=Workbook()
sheet=book.add_sheet(sheetname)
sheet.write(0,0,u'序號')
sheet.write(0,1,u'球隊')
sheet.write(0,2,u'時間')
sheet.write(0,3,u'結果')
sheet.write(0,4,u'主客')
sheet.write(0,5,u'比賽')
sheet.write(0,6,u'投籃命中率')
sheet.write(0,7,u'命中數')
sheet.write(0,8,u'出手數')
sheet.write(0,9,u'三分命中率')
sheet.write(0,10,u'三分命中數')
sheet.write(0,11,u'三分出手數')
sheet.write(0,12,u'罰球命中率')
sheet.write(0,13,u'罰球命中數')
sheet.write(0,14,u'罰球出手數')
sheet.write(0,15,u'籃板')
sheet.write(0,16,u'前場籃板')
sheet.write(0,17,u'後場籃板')
sheet.write(0,18,u'助攻')
sheet.write(0,19,u'搶斷')
sheet.write(0,20,u'蓋帽')
sheet.write(0,21,u'失誤')
sheet.write(0,22,u'犯規')
sheet.write(0,23,u'得分')
num=24
row_cnt=0
data_cnt=0
data_len=len(datasets)
print'data_len:',data_len
while(data_cnt<data_len):
row_cnt+=1
print'序號:',row_cnt
forcolinrange(num):
#printcol
sheet.write(row_cnt,col,datasets[data_cnt])
data_cnt+=1
book.save(filename)
defwriteDataToTxt(datasets):
fp=open('nba_data.txt','w')
line_cnt=1
foriinrange(len(datasets)-1):
#球隊名稱對齊的操作:如果球隊名字過短或者為76人隊是球隊名字後面加兩個table否則加1個table
ifline_cnt%24==2andlen(datasets[i])<5ordatasets[i]==u'費城76人':
fp.write(datasets[i]+' ')
else:
fp.write(datasets[i]+' ')
line_cnt+=1
ifline_cnt%24==1:
fp.write(' ')
fp.close()
if__name__=="__main__":
pages=int(1132/150)
url_header='hp?page='
url_tail='&QueryType=game&order=1&crtcol=date_out&GameType=season&PageNum=3000&Season0=2016&Season1=2017#label_show_result'
url_lists=getURLLists(url_header,url_tail,pages)
datasets=getNBAAllData(url_lists)
writeDataToTxt(datasets)
sheetname='nbanormaldata2016-2017'
str_time=time.strftime('%Y-%m-%d',time.localtime(time.time()))
filename='nba_normal_data'+str_time+'.xls'
saveDataToExcel(datasets,sheetname,filename)
㈥ 如何使用python 抓取雪球網頁
現在關注一個組合,就會有持倉變動的提示了。不過我覺得這事情挺有意思的。比如可以把很多持倉的數據都抓下來,做一些綜合的分析,看看現在網站上被持有最多的股票是哪一支,某一天被調入最多的又是哪一支之類。
於是我決定來抓抓看,順便藉此說說我通常用程序做自動抓取的過程。
Step.1 分析頁面
要抓一個網頁,首先自然是要「研究」這個網頁。通常我會用兩種方式:
一個是 Chrome 的 Developer Tools。通過它裡面的 Network 功能可以看到頁面發出的所有網路請求,而大多數數據請求都會在 XHR 標簽下。點擊某一個請求,可以看到其具體信息,以及伺服器的返回結果。很多網站在對於某些數據會有專門的請求介面,返回一組 json 或者 XML 格式的數據,供前台處理後顯示。
另一個就是直接查看網頁源代碼。通常瀏覽器的右鍵菜單里都有這個功能。從頁面的 HTML 源碼里直接尋找你要的數據,分析它格式,為抓取做准備。
對於雪球上的一個組合頁面 粗略地看了一下它發出的請求,並沒有如預想那樣直接找到某個數據介面。看源代碼,發現有這樣一段:
SNB.cubeInfo = {"id":10289,"name":"誓把老刀挑下位","symbol":"ZH010389" ...此處略過三千字... "created_date":"2014.11.25"}
SNB.cubePieData = [{"name":"汽車","weight":100,"color":"#537299"}];
cubeInfo 是一個 json 格式的數據,看上去就是我們需要的內容。一般我會找個格式化 json 的網站把數據復制進去方便查看。
這應該就是組合的持倉數據。那麼接下來,一切似乎都簡單了。只要直接發送網頁請求,然後把其中 cubeInfo 這段文字取出,按 json 讀出數據,就完成了抓取。甚至不用動用什麼 BeautifulSoup、正則表達式。
Step.2 獲取頁面
分析完畢,開抓。
直接 urllib.urlopen 向目標網頁發送請求,讀出網頁。結果,失敗了……
看了下返回結果:
403 Forbidden
You don't have permission to access the URL on this server. Sorry for the inconvenience.
被拒了,所以這種赤裸裸地請求是不行的。沒關系,那就稍微包裝一下:
send_headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Connection':'keep-alive',
'Host':'xueqiu.com',
'Cookie':r'xxxxxx',
}
req = urllib2.Request(url, headers=send_headers)
resp = urllib2.urlopen(req)
html = resp.read()
header 數據都可以從 Developer Tools 里拿到。這次順利抓到頁面內容。
一般網站或多或少都會對請求來源做一些阻攔,通過加 header 可以搞定大部分情況。
Step.3 提取數據
因為這個數據比較明顯,直接用通過一些字元串查找和截取操作就可以取出來。
pos_start = html.find('SNB.cubeInfo = ') + len('SNB.cubeInfo = ')
pos_end = html.find('SNB.cubePieData')
data = html[pos_start:pos_end]
dic = json.loads(data)
dic 就是一個包含數據的字典對象。之後想干什麼就隨便你了。
對於復雜一點的情況,可以通過 BeautifulSoup 來定位 html 標簽。再不好辦的,就用正則表達式,基本都可以解決掉。
Step.4 處理數據
因為我想對數據進行持久化存儲,並且做展示和分析,所以我用了 django 里的 ORM 來處理抓下來的數據。
# add Portfolio
portfolio, c = models.Portfolio.objects.get_or_create(code=dic['symbol'])
portfolio.name = dic['name']
portfolio.earnings = dic['total_gain']
portfolio.save()
# add Stock
stocks = dic['view_rebalancing']['holdings']
for s in stocks:
stock, c = models.Stock.objects.get_or_create(code=s['stock_symbol'])
stock.name = s['stock_name']
stock.count += 1
stock.weight += s['weight']
stock.save()
Portfolio 記錄下組合及其收益,Stock則記錄每支股票的被收錄數和總收錄份額。
對於抓取到的,一般也可以存在文件中,或者直接通過 SQL 存入資料庫,視不同情況和個人喜好而定。
Step.5 批量抓取
前面的一套做下來,就完整地抓取了一組數據。要達到目的,還要設計一下批量抓取的程序。
一個要解決的問題就是如何獲得組合列表。這個可以再通過另一個抓取程序來實現。然後根據這些列表來循環抓取就可以了。
若要細究,還要考慮列表如何保存和使用,如何處理抓取失敗和重復抓取,如何控制抓取頻率防止被封,可否並行抓取等等。
Step.6 數據分析
數據有了,你要怎麼用它,這是個很大的問題。可以簡單的統計現象,也可以想辦法深入分析背後隱藏的邏輯。不多說,我也還只是在摸索之中。
㈦ python爬蟲爬取的數據可以做什麼
爬蟲的概念是,爬取網上能看到的數據,也就是只要網上存在的,通過瀏覽器可以看到的數據。爬蟲都可以爬取。爬蟲爬取的原理就是偽裝成瀏覽器,然後進行爬取操作
哪些數據你需要你就可以爬取。比如爬取公司競爭對手的商業數據,爬取電影,音樂,圖片等等的。只要你希望得到的,前提瀏覽器可以訪問的都可以爬取
㈧ 怎麼學python爬取財經信息
本程序使用Python 2.7.6編寫,擴展了Python自帶的HTMLParser,自動根據預設的股票代碼列表,從Yahoo Finance抓取列表中的數據日期、股票名稱、實時報價、當日變化率、當日最低價、當日最高價。
由於Yahoo Finance的股票頁面中的數值都有相應id。
例如納斯達克100指數ETF(QQQ)
其中實時報價的HTML標記為
[html]view plain
<spanid="yfs_l84_qqq">87.49</span>
而標普500指數ETF(SPY)
其中實時報價的HTML標記為
[html]view plain
<spanid="yfs_l84_spy">187.25</span>
因此本數據抓取程序根據相應的id字元串來查找數據。具體來說就是先繼承HTMLParser,然後在自定義的子類中重載handle_data(self, data)方法,查找包含相應id字元串(例如實時報價的id字元串為"yfs_l84_"+股票代碼)的HTML標記,並輸出這個HTML標記中的數據(例如qqq的<span id="yfs_l84_qqq">87.49</span>,其中的數據87.49就是實時報價。)
樣本輸出:
數據依次是
數據日期 股票代碼 股票名稱 實時報價 日變化率 日最低價 日最高價
[python]view plain
05/05/(IBB)233.281.85%225.34233.28
05/05/(SOCL)17.480.17%17.1217.53
05/05/(PNQI)62.610.35%61.4662.74
05/05/2014xsdSPDRS&PSemiconctorETF(XSD)67.150.12%66.2067.41
05/05/2014itaiSharesUSAerospace&Defense(ITA)110.341.15%108.62110.56
05/05/2014iaiiSharesUSBroker-Dealers(IAI)37.42-0.21%36.8637.42
05/05/(VBK)119.97-0.03%118.37120.09
05/05/2014qqqPowerSharesQQQ(QQQ)87.950.53%86.7687.97
05/05/2014ewiiSharesMSCIItalyCapped(EWI)17.86-0.56%17.6517.89
05/05/(DFE)62.33-0.11%61.9462.39
05/05/(PBD)13.030.00%12.9713.05
05/05/(EIRL)38.52-0.16%38.3938.60
㈨ 如何用Python寫一個抓取天天基金網上每個基金經理業績的爬蟲
摘要 親您好,很高興為您解答,語言:python