将东方财富网中行情中心的上证A股数据爬取出来,数据内容包括:代码,名称,最新价,涨跌幅,涨跌额,成交量,成交额,最高,最低,今开,昨收(使用request库,json库)并将数据存入Excel表格中,不使用pandas库和正则表达法以及beautifulsoup库
时间: 2024-12-20 14:31:06 浏览: 8
东方财富沪深A股,港股和美股所有个股当日数据查询.py
5星 · 资源好评率100%
首先,要从东方财富网爬取行情中心的上证A股数据,我们需要使用Python的requests库发送HTTP请求获取HTML页面内容,然后解析这个内容找到所需的数据。由于不允许使用pandas库、正则表达式和BeautifulSoup库,我们可以使用`ElementTree`模块来进行简单的HTML解析。
这是一个基本的步骤指南:
1. 导入需要的库:
```python
import requests
from xml.etree.ElementTree import fromstring, Element
```
2. 发送GET请求并获取网页源码:
```python
url = "http://push2his.eastmoney.com/api/qt/stock/kline/get?secid=sz000001&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;VOTURNOVER;VOL;TURNOVER&klt=101&fqt=1&beg=1&end=99999999&client=webp&appver=2.0.24&PARTNER=EASTMoneyWeb"
response = requests.get(url)
data_html = response.text
```
3. 解析XML响应,提取数据:
```python
xml_data = data_html[data_html.find("<rows>"):data_html.rfind("</rows>") + len("</rows>")]
root = fromstring(xml_data)
# 创建空列表存储数据
data_list = []
for item in root.findall(".//row"):
code = item.find("TCLOSE").text
name = item.find("SECNAME").text
latest_price = float(item.find("TCLOSE").text)
change_rate = float(item.find("PCTCHG").text)
change_amount = float(item.find("VOTURNOVER").text) / 10000 # 计算万手单位
volume = int(item.find("VOL").text)
turnover = float(item.find("TURNOVER").text) / 100000000 # 计算亿金额
high = float(item.find("HIGH").text)
low = float(item.find("LOW").text)
open_price = float(item.find("TOPEN").text)
close_price_yesterday = float(item.find("LCLOSE").text)
data_dict = {
'代码': code,
'名称': name,
'最新价': latest_price,
'涨跌幅': change_rate,
'涨跌额(万手)': change_amount,
'成交量(万股)': volume,
'成交额(亿)': turnover,
'最高': high,
'最低': low,
'今开': open_price,
'昨收': close_price_yesterday
}
data_list.append(data_dict)
```
4. 将数据保存到Excel文件:
```python
# 这里由于不允许使用pandas,我们将直接写入文本文件(例如"data.xlsx"),每一行代表一条记录
with open('data.txt', 'w', newline='') as f:
for record in data_list:
line = '\t'.join(str(value) for value in record.values()) + '\n'
f.write(line)
```
请注意,实际操作中可能需要处理可能出现的网络异常、数据结构变化等问题。此外,东方财富网的数据可能会有变化,你需要确认URL和字段名是否仍然有效。
阅读全文