写在前面的叨叨

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

那就开工吧~

准备动作

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

  • Anaconda是之前就安装好了的,具体过程可以参考这个安装流程。
    Anaconda完全入门指南
  • Pandas是在Anaconda中用命令安装好的,还得摸索下这个工具。

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

一共是四个步骤:

  1. 用爬虫将数据抓取到本地csv文件中
  2. 将csv文件内的数据导入到数据库中
  3. 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'<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')

我们看一下源代码是这样的,注释写的很清楚,我们来拆解一下。

  • 引入模块,包括pandas和re等
  • 分模块写函数

    • getHtml()用于抓取网页,读取网页源码
    • getStackCode()对抓取到的源码读取,拆解出<li></li>结构里面的链接,打开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()

要好好学习~

磨刀霍霍:爬爬爬爬爬爬虫爬起来~相关推荐

  1. python爬虫数据分析可以做什么-python爬虫爬取的数据可以做什么

    在Python中连接到多播服务器问题,怎么解决你把redirect关闭就可以了.在send时,加上参数allow_redirects=False 通常每个浏览器都会设置redirect的次数.如果re ...

  2. Python爬虫高手爬爬爬(各种案例更新中。。。)

    文章目录 一.爬虫简介 1.1 爬虫在使用场景中的分类 1.2 robots.txt协议 1.3 网站知识 二 .基础模块requests 2.1介绍 2.2作用 2.3如何使用 2.4 内置属性或者 ...

  3. python爬爬爬之单网页html页面爬取

    python爬爬爬之单网页html页面爬取 作者:vpoet 日期:大约在夏季 注:随意copy 不用告诉我 #coding:utf-8 import urllib2 Response=urllib2 ...

  4. python网络爬虫_Python网络爬虫——爬取视频网站源视频!

    原标题:Python网络爬虫--爬取视频网站源视频! 学习前提 1.了解python基础语法 2.了解re.selenium.BeautifulSoup.os.requests等python第三方库 ...

  5. python java 爬数据_如何用java爬虫爬取网页上的数据

    当我们使用浏览器处理网页的时候,有时候是不需要浏览的,例如使用PhantomJS适用于无头浏览器,进行爬取网页数据操作.最近在进行java爬虫学习的小伙伴们有没有想过如何爬取js生成的网络页面吗?别急 ...

  6. java用爬虫爬一个页面_使用Java写一个简单爬虫爬取单页面

    使用Java爬虫爬取人民日报公众号页面图片 使用Java框架Jsoup和HttpClient实现,先看代码 爬取目标页面 1.使用Maven构建一个普通Java工程 加入依赖: org.jsoup j ...

  7. MATLAB爬虫爬取股票数据

    近年来,大数据盛行,有关爬虫的教程层次不穷.那么,爬虫到底是什么呢? 什么是爬虫? 百度百科是这样定义的: 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种 ...

  8. 在当当买了python怎么下载源代码-python爬虫爬取当当网

    [实例简介]python爬虫爬取当当网 [实例截图] [核心代码] ''' Function: 当当网图书爬虫 Author: Charles 微信公众号: Charles的皮卡丘 ''' impor ...

  9. python如何爬虫网页数据-python网络爬虫爬取网页内容

    1.什么是网络爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自 ...

  10. python爬虫代码实例-Python爬虫爬取百度搜索内容代码实例

    这篇文章主要介绍了Python爬虫爬取百度搜索内容代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 搜索引擎用的很频繁,现在利用Python爬 ...

最新文章

  1. linux下的包和RPM管理
  2. [转]数据结构:图的存储结构之邻接矩阵
  3. PowerDesigner的安装
  4. ArcGIS中的三种查询
  5. JavaScript-JavaScript概述及简单使用
  6. Innodb锁系统 Insert/Delete 锁处理及死锁示例分析
  7. python参数类型_Python 参数类型和参数匹配模型
  8. linux -rpm,linux 的rpm命令
  9. python怎么打开笔记本无线网络开关_如何轻松搞定 笔记本搜不到WIFI信号问题
  10. Java21天打卡Day11-字符串3
  11. 国密SM4对称算法实现说明(原SMS4无线局域网算法标准)
  12. python的方向_Python Shell下方向键显示「^[[C^[[D」修复方法
  13. 01.00 简单工厂模式
  14. 狂神设计模式笔记-工厂模式
  15. 进程的创建——fork函数
  16. centos7安装tomcat7
  17. 黑苹果部分usb、摄像头以及dw1560(BCM94352Z)蓝牙无法识别问题的解决方法
  18. python不能作为变量名的_在Python语言中,不能作为变量名的是
  19. leetcode 279:完全平方数
  20. Linux系统编程-第01天(基本命令)

热门文章

  1. Android仿微信聊天记录“图片及视频”默认最新图片从底部显示(时间排序升序)
  2. 使用mapstruct不生成Impl类
  3. keras CNTK 后端
  4. Spring-boot(1)-idea-helloworld
  5. 震惊,java仅用30行代码就实现了视频转音频的批量转换
  6. .NET中List排序总结
  7. 整数a按位取反(~)后的值为-(a+1)
  8. Vue -- watch用法
  9. 计算机硬件维护实验报告,计算机硬件维护实验报告.doc
  10. 第四届传智杯全国大学生IT技能大赛 初赛B组题解 -- D题