當前位置:
首頁 > 最新 > Python爬蟲實戰:批量採集股票數據,並保存到Excel中

Python爬蟲實戰:批量採集股票數據,並保存到Excel中

小編說:通過本文,讀者可以掌握分析網頁的技巧、Python編寫網路程序的方法、Excel的操作,以及正則表達式的使用。這些都是爬蟲項目中必備的知識和技能。

實例描述:通過編寫爬蟲,將指定日期時段內的全部上市公司股票數據爬取下來,並按照股票代碼保存到相應的Excel文件中。

本案例主要分為兩大步驟:

(1)要知道上市公司有哪些;

(2)根據每一個上市公司的股票編號爬取數據。

由於兩部分代碼相對比較獨立,可以做成兩個代碼文件。一個文件用來爬取股票代碼,另一個文件用來爬取股票內容。

1 爬取股票代碼

爬取股票代碼的基本思路是:

(1)分析網站上的網頁源代碼,找到目標代碼。

(2)利用正則表達式,在整個網頁里搜索目標代碼,從而提取出所要的信息(股票代碼)。

有關金融證券領域的網站一般都會有上市公司的股票代碼信息。隨便找一個即可。

1.1找到目標網站

使用Chrome瀏覽器訪問鏈接:

股票代碼網頁

1.2打開調試窗口,查看網頁代碼

保持當前瀏覽器窗口為活動頁面,按F12鍵顯示出網頁的源代碼調試窗口,單擊調試窗口的Element按鈕,可以看到頁面的HTML代碼。

調試窗口

1.3在網頁源碼中找到目標元素

網頁的源代碼是按照HTML的語法規則自動摺疊的。可以用游標在HTML代碼中任意單擊將其展開。當游標移動到某個元素時,會看到右測網頁中對應的元素會有變化,呈現被選中狀態。

選中元素

上圖中,箭頭所指的網頁源代碼,就是需要關注並爬取的內容。

1.4分析目標源代碼,找出規律

分析上圖中左側顯示的內容,與右側代碼之間的對應關係。不難發現,左側顯示的每個股票代碼所對應的源代碼格式都是固定的。

目標源代碼內容

這條源代碼內容,便是要找到的目標代碼。將其整理成如下字元串模版:

其中,「.html」前面的「股票代碼」就是需要抓取的內容。分析到這裡,開發任務就轉化成:在整個網頁的源碼中,找到這樣結構的字元串,並將其中的股票代碼提取出來。

1.5編寫代碼抓取股票代碼

編寫代碼實現urlTolist函數,並在該函數里實現主要的抓取功能:

(1)通過使用urllib.request模塊中的urlopen函數訪問目的鏈接;

(2)通過urlopen返回值的read方法獲得網頁的全部內容;

(3)使用re模塊下的compile函數來做正則表達式的計算模版,其模版字元串就是之前分析的網頁目標代碼;

(4)調用re.compile返回對象的findall方法,來對網頁的HTML代碼進行正則表達式計算。得到的返回值code便是最終的爬取結果。

代碼1:爬取股票代碼

在上面代碼中,函數urlTolist的最後4行代碼是為了讓結果更加有效而做的數值驗證。即,只有6(上海證交所)、0(深圳證交所)、3(創業板)打頭的股票代碼是有效代碼。

在代碼中,正則表達式的模版部分(代碼中的第9行),有這麼一段代碼「SS(.*?)」。其中,兩個「S」表明每個股票代碼的前兩個都是字元,是要跳過的地方。後面的括弧及裡面的內容,表示需要讓正則表達式來抓取的部分。(關於正則表達式,不在本書介紹的內容之內,有興趣的讀者可以自行研究。不了解也沒關係,直接這麼使用即可。)

1.6運行代碼,顯示結果

代碼運行後,顯示如下內容

可以看到,爬取的結果是以list的方式存放的。前10條都是上海證交所的股票。

2 爬取股票內容

通過訪問網易提供的服務介面,可以獲取到股票內容。只需按照其提供的請求格式,傳入股票代碼及所要查看的時間段,即可得到該股票的具體數據。

為了爬取全部數據,需要遍歷所有的股票代碼,並調用網易的服務介面。

2.1編寫代碼抓取批量內容

在代碼實現上,仍然使用urllib.request模塊進行網路請求,並將調用urllib.request模塊下的urlretrieve函數,將返回的數據保存到Excel表裡。代碼如下:

代碼2:爬取股票內容

代碼中,設置的時間段為1個月,即從20161131到20161231。

保存的結果放在D盤的all_stock_data路徑下。為了保證保存操作正常運行,需要確保D盤下存在all_stock_data文件夾(若沒有,需要創建一個)。

2.2運行代碼顯示結果

運行代碼,輸出如下結果:

代碼運行結束之後,可以D盤的all_stock_data文件夾下找到生成的股票數據文件。

股票數據文件

至此,爬取股票數據的案例就結束了。讀者可以根據上面的知識,在網上爬取更多自己需要的內容。另外,爬取的結果還可以保存到MySQL或其他類型文件中。

GIF

本文摘自

《Python帶我起飛:入門、進階、商業實戰》

本書採用「教學視頻+ 圖書+ QQ群交流、答疑」三維學習方案,讓Python學習更輕鬆。


您閱讀的專業智庫

喜歡請分享至朋友圈

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

Python的前世今生
零基礎學習 Python 之字元編碼

TAG:Python |