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
.