Проблема с веб-очисткой отчетов о движении денежных средств от Yahoo finance для некоторых биржевых тикеров за пределами США

#python #yahoo-finance #yahoo-api #yfinance

Вопрос:

Приведенный ниже код предназначен для извлечения отчетов о движении денежных средств из yahoo finance. Он работает для биржевых тикеров «AAPL», но не работает для «0200.KL» в Бурсе, Малайзия. Есть какой-нибудь способ это исправить?

Дополнительный вопрос: Есть ли другой источник, такой как Alpha Vantage, который собирает данные об акциях в реальном времени, такие как цена акций и финансовые отчеты? (ps: Alpha Vantage, похоже, не работает с биржевыми тикерами Bursa Malaysia). yfinance также не работает для извлечения финансовой отчетности малайзийского биржевого тикера, хотя на веб-сайте yahoo finance представлены данные финансовой отчетности.

 import re 
import requests
from bs4 import BeautifulSoup
import json

#tickers="AAPL" #uncomment this and see how it works
tickers="0200.KL" #this ticker not works, it is a stock in Bursa Malaysia Exchange


url_financials=f"https://finance.yahoo.com/quote/{tickers}/financials?={tickers}"

user_agent = {"User-Agent": "Mozilla/5.0"} 
response = requests.get(url_financials,headers=user_agent)

soup = BeautifulSoup(response.text,"html.parser")
pattern = re.compile(r"s--sDatas--s")
script_data = soup.find("script",text=pattern).contents[0]

start=script_data.find("context") - 2   #find method returns the POSITION of the argument or the object
json_data=json.loads(script_data[start:-12])

annual_cashflow = json_data["context"]["dispatcher"]["stores"]["QuoteSummaryStore"]["cashflowStatementHistory"]["cashflowStatements"]

smts=[]

for s in annual_cashflow:
    statements={}
    for key, val in s.items():
        try:
            statements[key]=val["raw"]
        except KeyError:
            continue
        except TypeError:
            continue
    smts.append(statements)
smts