【问题标题】:Pulling Yahoo Finance Quotes Using Requests / BS4使用 Requests / BS4 获取 Yahoo Finance 报价
【发布时间】:2021-10-30 12:01:39
【问题描述】:

目标:

最终目标是能够检索在雅虎财经页面的“摘要”标签下的表格中找到的动态数据。我需要能够做到这一点 使用第三方 API,如 yahoo_fin 或 yfinance。为了澄清是哪个表(有很多),这里是一个截图:

(Link to the Exact Webpage).

我真正需要的唯一单元格是“音量”和“平均”。 Volume' 值,但我相信这些只能通过以下结构的 HTML 元素获得:

代码:

import requests
from bs4 import BeautifulSoup

url = 'https://finance.yahoo.com/quote/AMZN?p=EDTK&.tsrc=fin-srch'
r = requests.get(url)

web_content = BeautifulSoup(r.text,'lxml')
table_values = web_content.find_all('div', class_='Bxz(bb) Bdbw(1px) Bdbs(s) Bdc($seperatorColor) H(36px)')

print(table_values)

returns: '[]'

有什么我明显做错了吗?我不是 bs4 方面的专家,但我以前使用过这种语法,从来没有遇到过任何问题。

【问题讨论】:

    标签: web-scraping beautifulsoup python-requests dynamic-data


    【解决方案1】:

    您选择的是<div> 而不是<tr>:

    import requests
    from bs4 import BeautifulSoup
    
    url = "https://finance.yahoo.com/quote/AMZN?p=EDTK&.tsrc=fin-srch"
    r = requests.get(url)
    
    web_content = BeautifulSoup(r.text, "lxml")
    table_values = web_content.find_all(
        "tr", class_="Bxz(bb) Bdbw(1px) Bdbs(s) Bdc($seperatorColor) H(36px)"
    )
    
    for row in table_values:
        tds = [td.get_text(strip=True) for td in row.select("td")]
        print(*tds)
    

    打印:

    Previous Close 3,421.57
    Open 3,424.80
    Bid 3,472.00 x 1000
    Ask 3,473.00 x 1100
    Day's Range 3,395.59 - 3,472.58
    52 Week Range 2,871.00 - 3,773.08
    Volume 4,312,055
    Market Cap 1.758T
    Beta (5Y Monthly) 1.14
    PE Ratio (TTM) 60.47
    EPS (TTM) 57.40
    Earnings Date Oct 27, 2021-Nov 01, 2021
    Forward Dividend & Yield N/A (N/A)
    Ex-Dividend Date N/A
    

    【讨论】:

    • 这也是web_content.find(id="quote-summary").find_all("tr") 的目标同一个表,包括一个缺失的行,对吧?
    • @SIM 是的,它针对相同的行 - 包括 "Avg. Volume" 和 "1y Target Est" 所以它实际上更好(并且更漂亮)。
    • 谢谢,伙计们!我是新来的,我已经工作了一段时间来解决这个问题。祝你好运!
    猜你喜欢
    • 2018-04-10
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 2020-04-28
    相关资源
    最近更新 更多