2024山东大学创新项目实训_16

根据指定的季度和年份获取公司的财报收益数据。
earnings = get_earnings_transcript(quarter, self.ticker_symbol, year)
        return earnings

get_earnings_transcript函数的详细解释:
 

@retry(wait=wait_random_exponential(min=1, max=5), stop=stop_after_attempt(2))
def get_earnings_transcript(quarter: str, ticker: str, year: int):
    """Get the earnings transcripts

    Args:
        quarter (str)
        ticker (str)
        year (int)
    """
    response = requests.get(
        f"https://discountingcashflows.com/api/transcript/{ticker}/{quarter}/{year}/",
        auth=("user", "pass"),
    )

    resp_text = json.loads(response.text)
    # speakers_list = extract_speakers(resp_text[0]["content"])
    corrected_date = correct_date(resp_text[0]["year"], resp_text[0]["date"])
    resp_text[0]["date"] = corrected_date
    return resp_text[0]

该网站是一个显示现金流、财报等数据的网站 

1. 函数装饰器@retry

  • 作用:装饰器 @retry 表示在函数执行时,如果遇到指定的异常(默认为 Exception),会进行重试。
  • 参数解释
    • wait=wait_random_exponential(min=1, max=5):定义了重试时等待的时间间隔,采用随机指数增长等待时间,最小等待1秒,最大等待5秒。
    • stop=stop_after_attempt(2):定义了重试的停止条件,即最多重试2次(包括初始尝试),超过则不再重试。

2. 从浏览器获取数据

  • 作用:该函数用于通过 HTTP GET 请求获取指定公司、指定季度、指定年份的财报文本数据。

  • 参数

    • quarter:字符串,表示季度,如 "Q1", "Q2" 等。
    • ticker:字符串,表示公司的股票代码或标识符。
    • year:整数,表示年份。
  • HTTP 请求

    • 使用 requests.get 发起 GET 请求,访问 URL f"https://discountingcashflows.com/api/transcript/{ticker}/{quarter}/{year}/"
    • auth=("user", "pass"):使用基本认证,用户名为 "user",密码为 "pass"。
  • 响应处理

    • response.text:获取 HTTP 响应的文本内容。
    • json.loads(response.text):将 JSON 格式的响应文本解析为 Python 字典或列表对象。

3.进行日期矫正并返回

  • 日期校正
    • correct_date(resp_text[0]["year"], resp_text[0]["date"]):调用 correct_date 函数对财报文本中的日期进行校正,确保日期的年份与参数中指定的年份一致。
    • resp_text[0]["date"] = corrected_date:将校正后的日期更新回财报文本数据中。
  • 返回值
    • 函数返回校正后的财报文本数据的第一个条目(通常是字典类型),即包含了财报的详细信息,如年份、日期、内容等。

4.日期格式的规整该函数的主要功能是接收两个参数:yrdt,分别表示正确的年份和给定的日期时间。它会将给定的日期时间字符串解析为 datetime 对象,然后检查该对象的年份是否与正确的年份 yr 相符。如果不相符,则将 datetime 对象的年份替换为正确的年份 yr,最后将修正后的日期时间格式化为字符串并返回。 

def correct_date(yr, dt):
    """Some transcripts have incorrect date, correcting it

    Args:
        yr (int): actual
        dt (datetime): given date

    Returns:
        datetime: corrected date
    """
    dt = datetime.strptime(dt, "%Y-%m-%d %H:%M:%S")
    if dt.year != yr:
        dt = dt.replace(year=yr)
    return dt.strftime("%Y-%m-%d %H:%M:%S")

 该函数的主要功能是接收两个参数:yrdt,分别表示正确的年份和给定的日期时间。它会将给定的日期时间字符串解析为 datetime 对象,然后检查该对象的年份是否与正确的年份 yr 相符。如果不相符,则将 datetime 对象的年份替换为正确的年份 yr,最后将修正后的日期时间格式化为字符串并返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值