折腾了这么久,我终于在喝完一听快乐肥宅水后下定决心来学习写爬虫了。
目标很简单,由于我想要爬一下“证券化率”,而后可视化输出结果。
证券化率的基础就是上市公司的总市值,对于证券化率其实还蛮多说法的,好比雪球的这篇文。
中国的真实证券化率是多少?
爬虫对于证券类的分析来讲,其实已是司空见惯了,可是做为菜鸟小股民,但愿本身在写完这个爬虫以后也对股票有更深的认识吧,而后能赚钱就更好啦~
找了一个相对好入门的案例,来做为学习的范本。
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,而后导入数据库。
明天来尝试下本身复写一下这个爬虫~
主要涉及的内容是网页结果和模块方法的使用。
包括了:
要好好学习~