资讯专栏INFORMATION COLUMN

磨刀霍霍:爬爬爬爬爬爬虫爬起来~

Allen / 421人阅读

摘要:目标很简单,因为我想要爬一下证券化率,然后可视化输出结果。证券化率的基础就是上市公司的总市值,对于证券化率其实还蛮多说法的,比如雪球的这篇文。我们可以利用这个回调函数来显示当前的下载进度。

写在前面的叨叨

折腾了这么久,我终于在喝完一听快乐肥宅水后下定决心来学习写爬虫了。
目标很简单,因为我想要爬一下“证券化率”,然后可视化输出结果。
证券化率的基础就是上市公司的总市值,对于证券化率其实还蛮多说法的,比如雪球的这篇文。
中国的真实证券化率是多少?
爬虫对于证券类的分析来说,其实已经是司空见惯了,但是作为菜鸟小股民,希望自己在写完这个爬虫之后也对股票有更深的认识吧,然后能赚钱就更好啦~
找了一个相对好入门的案例,来作为学习的范本。
Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储

那就开工吧~
准备动作

主要使用的工具和模块包括:Anaconda Pandas MySQL

Anaconda是之前就安装好了的,具体过程可以参考这个安装流程。
Anaconda完全入门指南

Pandas是在Anaconda中用命令安装好的,还得摸索下这个工具。

pip install pandas

MySQL以前写PHP的时候,都习惯直接用Wamp打包处理了,这会儿就来摸索下多带带安装,安装教程参考这个。
windows下安装Mysql—图文详解

整理思路

一共是四个步骤:

用爬虫将数据抓取到本地csv文件中

将csv文件内的数据导入到数据库中

MySQL数据库内进行查询

我们今天的目标是完成第一步----因为MySQL还没部署完毕...明天继续~

爬虫启动
#导入需要使用到的模块
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"
  • " 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")
  • 我们看一下源代码是这样的,注释写的很清楚,我们来拆解一下。

    引入模块,包括pandas和re等

    分模块写函数

    getHtml()用于抓取网页,读取网页源码

    getStackCode()对抓取到的源码读取,拆解出

  • 结构里面的链接,打开Url对应的地址,看到对应的图形结构,红框就是需要命中的目标。

    根据代码,原作者只截取了6开头的大盘股的list存储入数组。
    然后用GET方法获取每个代码对应的股票的数据,对每组数据进行存储。
    
    测试代码

    将代码放到本地跑一下,看下结果。
    正常应该是会下载数据到文件夹下,但是报错了。


    应该是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,然后导入数据库。
    明天来尝试下自己复写一下这个爬虫~
    主要涉及的内容是网页结果和模块方法的使用。
    包括了:

    request.urlopen()

    re.compile()

    request.urlretriev()

    要好好学习~

    文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

    转载请注明本文地址:https://www.ucloud.cn/yun/43280.html

    相关文章

    • 服务器上部署scrapy项目

      摘要:爬爬们,如果你已经开始部署项目了,那么你肯定也已经写好了完整的爬虫项目,恭喜你,你很优秀今天忙了小半天的服务器部署,跟大家分享一些心得首先我们要有一台服务器,不好意思,这是废话,略过。。。。。 爬爬们,如果你已经开始部署项目了,那么你肯定也已经写好了完整的爬虫项目,恭喜你,你很优秀!**今天忙了小半天的服务器部署,跟大家分享一些心得~ 首先我们要有一台服务器,不好意思,这是废话,略过...

      UnixAgain 评论0 收藏0
    • 我是如何将博客转成PDF的

      摘要:但发现导出来的没有高亮语法没有语法高亮咋看啊,所以到这里我就放弃了,将就用一下博客园生成的吧爬虫学习上面提供的接口是一个生成一个文件,我是不可能一个一个将链接和标题放上去生成的因为博客园上发的也将近篇了。 前言 只有光头才能变强 之前有读者问过我:3y你的博客有没有电子版的呀?我想要份电子版的。我说:没有啊,我没有弄过电子版的,我这边有个文章导航页面,你可以去文章导航去找来看呀..然后...

      mindwind 评论0 收藏0
    • 一篇文章看懂大数据分析就业前景及职能定位

      摘要:今天就先给大家讲大数据分析工程师。所以你要和我说你在外面培训了个月的大数据分析后,就想做了,那请你再考虑考虑。而他们鼓吹的大数据分析师,其实就是。 showImg(https://segmentfault.com/img/remote/1460000018722710?w=1000&h=750); Overview: 序 基本概念 DS的职能要求 DE的职能要求 总结 一、序 今天...

      itvincent 评论0 收藏0
    • (快)开学了,各大编程语言在群里吵翻了天!

      摘要:我是由贝尔实验室的在年年间发明创造的,瞧,就他你们眼中的语言之父。与此同时,由于库函数的缺失,导致新手在开发任何一块小程序的时候都必须得亲力亲为。对了,我爸是微软,由和派生出来的面向对象的编程语言。对,我曾是世界上最好的编程语言。 ...

      bang590 评论0 收藏0

    发表评论

    0条评论

    最新活动
    阅读需要支付1元查看
    <