折騰了這麼久,我終於在喝完一聽快樂肥宅水後下定決心來學習寫爬蟲了。
目標很簡單,由於我想要爬一下「證券化率」,而後可視化輸出結果。
證券化率的基礎就是上市公司的總市值,對於證券化率其實還蠻多說法的,好比雪球的這篇文。
中國的真實證券化率是多少?
爬蟲對於證券類的分析來講,其實已是司空見慣了,可是做爲菜鳥小股民,但願本身在寫完這個爬蟲以後也對股票有更深的認識吧,而後能賺錢就更好啦~
找了一個相對好入門的案例,來做爲學習的範本。
Python爬蟲抓取東方財富網股票數據並實現MySQL數據庫存儲html
主要使用的工具和模塊包括:Anaconda
Pandas
MySQL
mysql
Pandas是在Anaconda中用命令安裝好的,還得摸索下這個工具。sql
pip install pandas
一共是四個步驟:數據庫
咱們今天的目標是完成第一步----由於MySQL還沒部署完畢...明天繼續~windows
#導入須要使用到的模塊 import urllib import re import pandas as pd import pymysql import os #爬蟲抓取網頁函數 def getHtml(url): html = urllib.request.urlopen(url).read() html = html.decode('gbk') return html #抓取網頁股票代碼函數 def getStackCode(html): s = r'<li><a target="_blank" href="http://quote.eastmoney.com/\S\S(.*?).html">' pat = re.compile(s) code = pat.findall(html) return code Url = 'http://quote.eastmoney.com/stocklist.html'#東方財富網股票數據鏈接地址 filepath = 'D:\\data\\'#定義數據文件保存路徑 #實施抓取 code = getStackCode(getHtml(Url)) #獲取全部股票代碼(以6開頭的,應該是滬市數據)集合 CodeList = [] for item in code: if item[0]=='6': CodeList.append(item) #抓取數據並保存到本地csv文件 for code in CodeList: print('正在獲取股票%s數據'%code) url = 'http://quotes.money.163.com/service/chddata.html?code=0'+code+\ '&end=20161231&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP' urllib.request.urlretrieve(url, filepath+code+'.csv')
咱們看一下源代碼是這樣的,註釋寫的很清楚,咱們來拆解一下。數組
分模塊寫函數服務器
根據代碼,原做者只截取了6開頭的大盤股的list存儲入數組。 而後用GET方法獲取每一個代碼對應的股票的數據,對每組數據進行存儲。
將代碼放到本地跑一下,看下結果。
正常應該是會下載數據到文件夾下,可是報錯了。app
應該是request模塊下的urlretrieve
函數報錯。
關聯語句是函數
urllib.request.urlretrieve(url, filepath+code+'.csv')
關於urlretrieve()
這個方法,由於沒有使用過,因此來看下詳解。
Python urllib模塊urlopen()與urlretrieve()詳解工具
urlretrieve()用於直接將遠程數據下載到本地。
urllib.urlretrieve(url[, filename[, reporthook[, data]]])
參數說明:
url
:外部或者本地url
filename
:指定了保存到本地的路徑(若是未指定該參數,urllib會生成一個臨時文件來保存數據);
reporthook
:是一個回調函數,當鏈接上服務器、以及相應的數據塊傳輸完畢的時候會觸發該回調。咱們能夠利用這個回調函數來顯示當前的下載進度。
data
:指post到服務器的數據。該方法返回一個包含兩個元素的元組(filename, headers),filename表示保存到本地的路徑,header表示服務器的響應頭。
會過來看咱們的函數語句↓
urllib.request.urlretrieve(url, filepath+code+'.csv')
指定了地址和文件名(保存到本地的路徑),因此我試試在本地新建一個600000.csv
來測試下結果。
而後發現並無結果。
而後發現本身幹了很蠢的事情.....
emmm....實際上是個人路徑寫錯了,而後實驗結果是這樣的~
如今就坐等爬完啦~而後安裝MySQL,而後導入數據庫。
明天來嘗試下本身複寫一下這個爬蟲~
主要涉及的內容是網頁結果和模塊方法的使用。
包括了:
要好好學習~