10行代码爬取股票数据

10行代码爬取股票数据

使用pandas中的read-html()函数,仅10行代码就可以爬取新浪财经的所有股票数据。

read_html()函数

read_html()函数
python的pandas库除了可以做数据分析,还可以做简易爬虫,仅需几行核心代码,就可以实现一个爬虫程序,轻松爬取网页数据!不过它只能针对网页上table类型表格数据进行爬取。

table类型的表格

我们在网页上会经常看到这样一些表格,比如:
QS2018世界大学排名:
财富世界500强企业排名:
IMDB世界电影票房排行榜:
中国上市公司信息:
他们除了都是表格以外,还一个共同点就是当你点击右键-定位时,可以看到他们都是table类型的表格形式。
从中可以看到table类型的表格网页结构大致如下:

<table class="..." id="...">
    <thead>
    <tr>
    <th>...</th>
    </tr>
    </thead>
    <tbody>
        <tr>
            <td>...</td>
        </tr>
        <tr>...</tr>
        <tr>...</tr>
        <tr>...</tr>
        <tr>...</tr>
        ...
        <tr>...</tr>
        <tr>...</tr>
        <tr>...</tr>
        <tr>...</tr>        
    </tbody>
</table>

爬取目标页面

链接: https://vip.stock.finance.sina.com.cn/q/go.php/vComStockHold/kind/jjzc/index.phtml?num=40&p=1.
爬取的目标网址是:新浪财经

可以看到,页面数据主要如下:
在这里插入图片描述按F12打开开发者模式,查看网页源代码,发现是有table标签的表格数据。
在这里插入图片描述
经观察发现所需表格是网页中第1个表格

代码实现

打开编辑器,运行如下代码:

import pandas as pd
import csv

for i in range(1,262):  # 爬取全部261页数据
        url = 'http://vip.stock.finance.sina.com.cn/q/go.php/vComStockHold/kind/jjzc/index.phtml?p=%s' % (str(i))

        tb = pd.read_html(url)[0] #经观察发现所需表格是网页中第1个表格,故为[0]
        #新建一个名称为3的excel表格2,文本类型为utf-8
        tb.to_csv(r'3.csv', mode='a', encoding='utf_8_sig', header=1, index=0)
        print('第'+str(i)+'页抓取完成')

excel数据展示:
在这里插入图片描述

参考

参考文章网址如下:
[1]: https://vip.stock.finance.sina.com.cn/q/go.php/vComStockHold/kind/jjzc/index.phtml?num=40&p=1https://blog.csdn.net/solo_msk/article/details/124225502?ops_request_misc=&request_id=&biz_id=102&utm_term=read_html&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-3-124225502.nonecase&spm=1018.2226.3001.4187.
[2]: https://blog.csdn.net/Morgan_fang1/article/details/95165316?ops_request_misc=&request_id=&biz_id=102&utm_term=read_html&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-5-95165316.nonecase&spm=1018.2226.3001.4187
.

  • 16
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值