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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考资料(感谢!)

配角七三—如何抓取网页中的表格:
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.
Python中,爬取新浪财经报表通常会涉及网络爬虫技术,特别是使用像`requests`库来获取网页数据,然后使用如`BeautifulSoup`或`Pandas`来解析HTML并提取所需的信息。以下是一个基本步骤的概述: 1. **安装必要的库**:首先需要安装`requests`、`beautifulsoup4`(用于HTML解析)和`pandas`(用于处理数据)等库。可以使用`pip install requests beautifulsoup4 pandas`命令来安装。 2. **发送HTTP请求**:使用`requests.get()`函数访问新浪财经报表页面,获取网页源码。 ```python import requests url = 'https://finance.sina.com.cn/' + your_report_url # 替换为具体的报表URL response = requests.get(url) ``` 3. **解析HTML**:使用BeautifulSoup解析网页内容,找到包含你需要的数据部分,比如`<table>`标签。 ```python from bs4 import BeautifulSoup soup = BeautifulSoup(response.text, 'html.parser') table = soup.find('table', class_='data_table') # 类名可能因网页结构而异 ``` 4. **提取数据**:遍历表格中的和列,将数据转化为DataFrame,如果数据量大,可能还需要处理分页。 ```python import pandas as pd data = [] rows = table.find_all('tr') for row in rows: cols = row.find_all('td') data.append([col.text.strip() for col in cols]) df_report = pd.DataFrame(data, columns=headers) # headers是对每个列标题的列表 ``` 5. **保存数据**:最后,你可以选择直接打印数据到控制台,或者将其保存到CSV、Excel或其他格式。 ```python df_report.to_csv('report.csv', index=False) # 将数据保存为CSV文件 ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值