python从零开始爬东方财富网

python从零爬虫获取东方财富网的数据(真实从零开始😶)

北邮大二电子在读(18级)。虽然学校并没有教过python但是直接留了python的作业🧐(虽然不是我的作业,我觉得好玩拿来写了).qwq.所以我就要从零开始学python,然后从零开始爬数据,然后从零开始存到数据库,然后从零开始处理数据。
感兴趣整个思路的可以看下去✨,嫌啰嗦的可以去github直接下代码,我也有注释的🥱
哦对,我是mac

大概要实现的功能是这样的:
获取东方财富所有支持融资融券的融资余额及历史数据,存到数据库里,交给搭档进行可视化分析

第一次看到题目的时候还是很懵,毕竟什么都不会。但是想了一下,我觉得我可以先这样:

  • 安装python
  • 学一下基础的语句(其实我后来并没有学)
  • 了解爬虫的原理和知识并 跟着网上练习简单爬虫
  • 分析我的作业需求和构思怎么实现
  • 安装数据库,学习简单操作
  • 开始写作业

1.准备工作

1.1 安装pycharm

所以我先安装了pycharm,在官网下载就可以。这个是收费的,但是学生用教育邮箱注册就可以获得免费激活(这里是官方的指示链接)
然后再编译的时候遇到了配置环境的问题(需要安装很多包),搜索发现可以安装一个anaconda的软件包管理系统,里面几乎有全部的包,所以就去安装了。anaconda在官网下载就好了。
记得在任务栏的Pycharm-Preferences-Project Interpreter那里改一下哦。如果环境不对的话,你在import的时候会报错。可以在控制台右下角看到

1.2学一下简单基础的语句

这里我是去菜鸟上看了眼,感觉和c的思路都差不多吧,不会写或者报错的时候再去查应该是够用的,就没有再看下去了。但是之后再用的时候,发现python的字典之前没有接触过,所以大家可以先看下这部分的知识。(还有python不用打分号诶)

1.3 了解爬虫的原理和知识+小练习

推荐大家去看莫烦的网站(莫烦PYTHON)!我感觉对与基础的爬虫来讲的话,看到3-3就可以了。莫烦大大真的讲的很清楚很有条理(当然对于零基础的我来讲还是经常需要去查语法看下是怎么回事)。莫烦的教程会有小练习,每完成一个心里都会有谱一些。看完教程,我觉得我已经可以分析我的作业了~

莫烦用的是jupyter notebook这个真的很香,是网页的,可以一块一块代码单独运行的,debug的时候或者学习某个语法的时候非常方便。如果你安装了anaconda,你在终端直接输入jupyter notebook,按下回车就可以运行了。

1.4 分析我的作业

其实老师提供了一个思路,就是东方财富每只股票的链接是有规律的

http://data.eastmoney.com/rzrq/ #融资融券数据全览
http://data.eastmoney.com/rzrq/stock/600815.3.html#*ST厦工
http://data.eastmoney.com/rzrq/stock/600816.3.html#安信信托

那么我只需要改这个“600815”的这个数据就可以访问每一个页面了,然后就可以爬数据了~原来“600815”这六位数是每个股票都会有的。那么就是

  • 获得股票的id和name
  • 爬取一支股的相关信息
  • 用已有的股票id替换参数来实现循环爬取信息
1.5安装数据库+简单操作

但是既然要实现爬虫了,就发现需要存数据了。为了队友方便肯定是要放到数据库里。所以从这里开始,我又需要去学数据库了。
数据库用mysql,我去搜了一些教程,觉得YouTube上的这个特别赞,视频制作精美,老师讲的很容易懂,而且下方有节点链接。大概看了40min后面的就可以需要什么单独再查用法了。这里是视频链接->Programming with Mosh
到这一步,已经是会了使用mysql和mysql workbench了,可以回到python去写作业啦

那么现在就开始操作了😊

2. 建立股票数据表

  • 获取股票的id和name

  • 把股票的信息放入数据库

    通过在东方财富网翻来覆去终于找到了这样的一个网址(东方财富网股票一览表),上面有股票名字和id。右键查看网页源代码,看了一下,网页上的文字不是很多,文字部分基本全是有用信息,所以大概是用get_text()就可以了(莫烦爬百度的教程里有用到)

import requests
from bs4 import BeautifulSoup
import re	
#get id and name 
url = 'http://quote.eastmoney.com/stock_list.html'
html=requests.get(url)
soup=BeautifulSoup(html.content,'lxml')
stocks_in = soup.find_all("li")

for stock_in in stocks_in:
    print(stock_in.get_text())

很简单的就得到了结果呢
得到的结果如下得到的就是一个还算整齐的一大段字符
其实这个前面是有一些我们不需要的文字的,那怎么用语言来实现删除呢?不,我选择了手动,我command+all,然后复制粘贴到了笔记本,然后手动选择了一下我不需要的内容,delete掉了。这样我们就得到了一个按行存放的股票的信息。这很快乐
得到结果后要把数据放到数据库里,这样以后访问会方便一些。这个实现就很简单了

  • 连接数据库
  • 建表
  • 按行读取txt
  • 把信息放入数据库

在这里需要用到一个叫做PyMySql的库,用pippip3 install pymysql或者condaconda install -c anaconda pymysql都可以安装。非常推荐用conda,因为我在用pip给我的其他环境安装的时候,遇到了一大串的问题,花了一个下午才解决。但是用conda就真的是一键安装了。如果安装不上,可能是缺少软连接的问题,把报错复制粘贴去搜。

2.1 连接数据库

这里要用到pymysql库了,记得import pymysql一下。这个”pymysql“,网上有各种版本(MySQLdb这样的),主要看你安装的时候是什么,环境里有的是什么。
连接数据库用connection的语句,可能是我的库就不太一样,所以网上常见的MySQLdb.connect()对我就不适用。我在pymysql官方手册找到了一个语法,用这个就可以的connection
剩下的就没什么难的了,但还是把我的代码放上来

db = pymysql.connections.Connection(
    host='127.0.0.1',  #这个建议自己去mysql里看一眼,一般默认是127.0.0.1,是本地地址
    port=3306,  #默认端口也是3306
    user='root',
    password='*****',
    charset='utf8'
)
print(
  • 21
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值