Python 爬取新浪财经部分股票的历史交易数据

本文介绍了如何利用Python爬取新浪财经上的部分股票历史交易数据。首先,通过分析网页结构并使用相关函数模拟访问网页来抓取表格数据。然后,针对可能存在的数据不全情况,添加额外函数补充数据。内容包括爬取近一个月和近一年的历史交易数据。请注意,源代码可能需要根据实际需求进行调整,并且.xlsx文件路径需手动修改。
摘要由CSDN通过智能技术生成

参考资料(感谢!)

配角七三—如何抓取网页中的表格:
https://zhuanlan.zhihu.com/p/33986020

爬取准备

import requests
from bs4 import BeautifulSoup
import pandas as pd
import  os
import time
import random

爬取思路

找到数据所在的网页,利用开发者工具,查看网页url,请求状态,源代码等等,然后定位数据元素。随后,进行编程。利用相关函数,模拟访问网页,采集数据,加以处理,并保存至本地。(细节之处不到位,还请见谅,博主还会再找时间另外总结)
在这里插入图片描述

模块1:网页表格数据爬取

def get_stock_table(stockcode,i):
        url = 'http://vip.stock.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/' + str(
            stockcode) + '.phtml?year=2019&jidu=' + str(i)
        print(url)
        res = requests.get(url)
        res.encoding = 'gbk'
        soup = BeautifulSoup(res.text, 'lxml')
        tables = soup.find_all('table', {'id': 'FundHoldSharesTable'})
        df_list = []
        for table in tables:
            df_list.append(pd.concat(pd.read_html(table.prettify())))
        df = pd.concat(df_list)
        df.columns = df.iloc[0]
        headers = df.iloc[0]
        df = pd.DataFrame(df.values[1:], columns=headers)
        #print(len(df) - 1)   #df中有几行数据
        if (len(df) - 1 < 22):
            c =len(df)-1
            df = add_stock_table(stockcode,i,c,df)
        else:
            df =pd.DataFrame(df.values[1:22], columns=headers)
        df = df.reset_index(drop=True)
        df.to_excel('...\\'+str(stockcode) +'.xlsx')
        sleeptime = random.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值