简单爬虫:东方财富网股票数据爬取
以下是一个简单的示例代码,用于爬取东方财富网(http://quote.eastmoney.com/center/grid.html)上某股票(例如“600771”)在2023年12月30日的数据。
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 股票代码
stock_code = "600771"
# 设置请求头,模拟浏览器访问
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
# 东方财富网股票历史数据URL
url = f'http://quotes.money.163.com/service/chddata.html?code=1.{stock_code}&start=20231229&end=20231230'
# 发送请求
response = requests.get(url, headers=headers)
# 检查请求是否成功
if response.status_code == 200:
# 解析数据
data = response.text.split('~')
data.pop(0) # 移除数组中的空数据
# 转换数据为DataFrame
df = pd.DataFrame(data, columns=['日期', '开盘', '收盘', '最高', '最低', '成交量', '成交额'])
# 将日期字段转换为日期格式
df['日期'] = pd.to_datetime(df['日期'], format='%Y%m%d')
# 转换其他数字字段为浮点型
for col in df.columns[1:]:
df[col] = df[col].astype('float')
# 输出结果
print(df)
这段代码首先设置了股票代码和请求头,然后构造了请求的URL。接着,它发送请求,检查响应状态,并解析返回的文本数据。最后,它将数据转换为Pandas DataFrame,并对其进行了一些清洗工作,如转换日期格式和数据类型,最后打印出来。
注意:
- 这个例子假设只获取2023年12月30日的数据,实际上可以通过调整URL中的
start
和end
参数来获取不同时间段的数据。 - 东方财富网可能有反爬机制,如果代码无法正常工作,可能需要更新或修改请求头信息,以模拟真实的浏览器访问。
评论已关闭