1. 如何用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])
2. java 如何實現 獲取實時股票數據
一般有三種方式:
網頁爬蟲。採用爬蟲去爬取目標網頁的股票數據,去GitHub或技術論壇(如CSDN、51CTO)上找一下別人寫的爬蟲集成到項目中。
請求第三方API。會有專門的公司(例如網路API市場)提供股票數據,你只需要去購買他們的服務,使用他們提供的SDK,仿照demo開發實現即可。如下圖所示:
3. 如何用爬蟲抓取股市數據並生成分析報表
我用前嗅的forespider數據採集軟體爬過股市信息的,比較簡單,分析了一下歷史股價,目前數據還不多沒做太多分析。過幾天再說
4. python如何解析爬取的數據
用json方法轉成字典
5. 如何用python獲取股票數據
在Python的QSTK中,是通過s_datapath變數,定義相應股票數據所在的文件夾。一般可以通過QSDATA這個環境變數來設置對應的數據文件夾。具體的股票數據來源,例如滬深、港股等市場,你可以使用免費的WDZ程序輸出相應日線、5分鍾數據到s_datapath變數所指定的文件夾中。然後可使用Python的QSTK中,qstkutil.DataAccess進行數據訪問。
6. 有哪些網站用爬蟲爬取能得到很有價值的數據
一般有一下幾種
一些常用的方法
IP代理
對於IP代理,各個語言的Native
Request
API都提供的IP代理響應的API,
需要解決的主要就是IP源的問題了.
網路上有廉價的代理IP(1元4000個左右),
我做過簡單的測試,
100個IP中,
平均可用的在40-60左右,
訪問延遲均在200以上.
網路有高質量的代理IP出售,
前提是你有渠道.
因為使用IP代理後,
延遲加大,
失敗率提高,
所以可以將爬蟲框架中將請求設計為非同步,
將請求任務加入請求隊列(RabbitMQ,Kafka,Redis),
調用成功後再進行回調處理,
失敗則重新加入隊列.
每次請求都從IP池中取IP,
如果請求失敗則從IP池中刪除該失效的IP.
Cookies
有一些網站是基於cookies做反爬蟲,
這個基本上就是如
@朱添一
所說的,
維護一套Cookies池
注意研究下目標網站的cookies過期事件,
可以模擬瀏覽器,
定時生成cookies
限速訪問
像開多線程,循環無休眠的的暴力爬取數據,
那真是分分鍾被封IP的事,
限速訪問實現起來也挺簡單(用任務隊列實現),
效率問題也不用擔心,
一般結合IP代理已經可以很快地實現爬去目標內容.
一些坑
大批量爬取目標網站的內容後,
難免碰到紅線觸發對方的反爬蟲機制.
所以適當的告警提示爬蟲失效是很有必有的.
一般被反爬蟲後,
請求返回的HttpCode為403的失敗頁面,
有些網站還會返回輸入驗證碼(如豆瓣),
所以檢測到403調用失敗,
就發送報警,
可以結合一些監控框架,
如Metrics等,
設置短時間內,
告警到達一定閥值後,
給你發郵件,簡訊等.
當然,
單純的檢測403錯誤並不能解決所有情況.
有一些網站比較奇葩,
反爬蟲後返回的頁面仍然是200的(如去哪兒),
這時候往往爬蟲任務會進入解析階段,
解析失敗是必然的.
應對這些辦法,
也只能在解析失敗的時候,
發送報警,
當告警短時間到達一定閥值,
再觸發通知事件.
當然這個解決部分並不完美,
因為有時候,
因為網站結構改變,
而導致解析失敗,
同樣回觸發告警.
而你並不能很簡單地區分,
告警是由於哪個原因引起的.
7. 如何用爬蟲抓取股市數據並生成分析報表
1. 關於數據採集
股票數據是一種標准化的結構數據,是可以通過API介面訪問的(不過一般要通過渠道,開放的API有一定的局限性)。也可以通過爬蟲軟體進行採集,但是爬蟲軟體採集數據不能保證實時性,根據數據量和採集周期,可能要延遲幾十秒到幾分鍾不等。我們總結了一套專業的爬蟲技術解決方案(Ruby + Sidekiq)。能夠很快實現這個採集,也可以後台可視化調度任務。
2. 關於展現
網路股票數據的展現,網頁端直接通過HTML5技術就已經足夠,如果對界面要求高一點,可以採用集成前端框架,如Bootstrap;如果針對移動端開發, 可以使用Ionic框架。
3. 關於觸發事件
如果是採用Ruby on Rails的開發框架的話,倒是很方便了,有如sidekiq, whenever這樣子的Gem直接實現任務管理和事件觸發。
8. 用爬蟲爬一些平台的數據 是怎麼爬
顯然不能直接儲存,你還得解析出自己需要的內容。 比如我爬取某新聞網今日的國內新聞,那麼我創建一個實體類,裡面有屬性:新聞標題,新聞時間,正文等等。解析出你需要的內容,封到實體裡面,然後在層直接save到資料庫即可 如果你爬下的是整.
9. Python 如何爬股票數據
現在都不用爬數據拉,很多量化平台能提供數據介面的服務。像比如基礎金融數據,包括滬深A股行情數據,上市公司財務數據,場內基金數據,指數數據,期貨數據以及宏觀經濟數據;或者Alpha特色因子,技術分析指標因子,股票tick數據以及網路因子數據這些數據都可以在JQData這種數據服務中找到的。
有的供應商還能提供level2的行情數據,不過這種比較貴,幾萬塊一年吧