Initial commit with translated description

This commit is contained in:
2026-03-29 13:19:31 +08:00
commit c38a898a3a
11 changed files with 546 additions and 0 deletions

View File

@@ -0,0 +1,100 @@
#!/usr/bin/env python3
"""
Summarize the performance of all stocks in the watchlist.
This script fetches current stock data from 10jqka.com.cn for each stock
in the watchlist and provides a summary of their recent performance.
"""
import os
import sys
import requests
from bs4 import BeautifulSoup
import time
# Standardized watchlist file path
WATCHLIST_FILE = os.path.expanduser("~/.clawdbot/stock_watcher/watchlist.txt")
def fetch_stock_data(stock_code):
"""Fetch stock data from 10jqka.com.cn."""
url = f"https://stockpage.10jqka.com.cn/{stock_code}/"
try:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url, headers=headers, timeout=10)
response.encoding = 'utf-8'
if response.status_code != 200:
return None
soup = BeautifulSoup(response.text, 'html.parser')
# Extract basic info
title = soup.find('title')
stock_name = ""
if title:
title_text = title.get_text()
if '(' in title_text and ')' in title_text:
stock_name = title_text.split('(')[0].strip()
# Look for performance data
performance_data = {}
# Try to find recent performance indicators
# This is a simplified version - in practice, you'd need more robust parsing
text_content = soup.get_text()
# Look for key phrases
if '涨跌幅' in text_content:
# Extract percentage changes
import re
percentages = re.findall(r'[-+]?\d+\.?\d*%', text_content)
if percentages:
performance_data['recent_changes'] = percentages[:3] # Get first 3 percentages
return {
'code': stock_code,
'name': stock_name,
'url': url,
'performance': performance_data
}
except Exception as e:
print(f"Error fetching data for {stock_code}: {e}", file=sys.stderr)
return None
def summarize_performance():
"""Summarize performance of all stocks in watchlist."""
if not os.path.exists(WATCHLIST_FILE):
return
with open(WATCHLIST_FILE, 'r', encoding='utf-8') as f:
lines = f.readlines()
if not lines or all(not line.strip() for line in lines):
return
# Directly output performance summary without any command prompts
for line in lines:
line = line.strip()
if line:
parts = line.split('|')
if len(parts) == 2:
code, name = parts
# Fetch data
stock_data = fetch_stock_data(code)
if stock_data:
if stock_data['performance']:
for i, change in enumerate(stock_data['performance'].get('recent_changes', []), 1):
print(f"{code} - {name} - 指标{i}: {change}")
else:
print(f"{code} - {name} - 行情数据暂不可用")
else:
print(f"{code} - {name} - 获取数据失败")
# Be respectful to the server
time.sleep(1)
if __name__ == "__main__":
summarize_performance()