如何编写Python代码从EastMoney网站抓取个股的数据(例如股票代码、名称和市净率),并将这些数据按照市净率降序排列后展示?请提供完整的代码及预期输出示例。
时间: 2024-11-22 21:42:27 浏览: 5
Python项目开发实战_网络爬虫批量采集股票数据保存到Excel中_编程案例实例课程教程.pdf
5星 · 资源好评率100%
在Python中,我们可以使用BeautifulSoup库来解析HTML并提取数据,以及pandas库来处理和排序数据。首先,你需要安装这两个库,如果还没有安装可以使用pip安装:
```bash
pip install beautifulsoup4 pandas requests
```
然后,你可以尝试下面的代码示例,假设东财网的股息数据是以JSON格式返回的,而不是HTML。实际的网页抓取可能需要针对东财网的具体API或HTML结构进行调整。
```python
import requests
import json
from bs4 import BeautifulSoup
import pandas as pd
# 模拟请求东财数据,这里只是一个例子,真实情况需替换为你获取数据的实际URL
def get_stock_data(stock_code):
url = f"https://api.eastmoney.com/f10/v3/stock/kline/get?code={stock_code}&fields=stockname,pbr&unit=day&sort=pbr&start=20200101&end=20221231"
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'
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = json.loads(response.text)
return data['data']['list']
else:
return []
def process_data(data):
stock_df = pd.DataFrame([
{'stock_code': d['StockCode'], 'stock_name': d['StockName'], 'price_to_book_ratio': d['PBR']}
for d in data
])
# 数据排序,按市净率降序
stock_df = stock_df.sort_values('price_to_book_ratio', ascending=False)
return stock_df
# 示例股票代码
stock_code = '600000' # 东方明珠,替换成你要抓取的股票代码
stock_data = get_stock_data(stock_code)
if stock_data:
processed_data = process_data(stock_data)
print(processed_data[['stock_code', 'stock_name', 'price_to_book_ratio']].head())
else:
print("Failed to fetch data")
阅读全文