【问题标题】:python web-scraping yahoo financepython web-scraping yahoo Finance
【发布时间】:2017-09-06 16:26:01
【问题描述】:

自从雅虎财经更新了他们的网站。一些表似乎是动态创建的,实际上并未存储在 HTML 中(我曾经使用 BeautifulSoup、urllib 获取此信息,但这将不再起作用)。我关注分析师表,例如ADP,特别是一年前每股收益的收益估计(当年列)。您无法从 API 获取此信息。

我发现这个链接非常适用于分析师推荐趋势。有谁知道如何为此页面上的主表做类似的事情? (关联: python lxml etree applet information from yahoo)

我试图按照所采取的步骤进行操作,但坦率地说,这超出了我的范围。 我只需要返回整张桌子,我可以从那里挑选一些东西。干杯

【问题讨论】:

  • 您需要的数据不是可以通过API获得吗?
  • 你可以使用这个endpoint。它以 json 格式返回所有需要的数据。要解析该数据,您可以使用Request
  • 你好。您是如何获得该端点网址的?我需要能够为任何代码动态生成这样的 url。我可以看到数据在那里我需要做的就是按照你说的解析它。
  • 实际上,如果我只是用另一个有效的代码替换那个端点上的代码。谢谢和 fedterzi,正如我在原始帖子中所说,它不在 api 中。

标签: python python-3.x web-scraping yahoo-finance


【解决方案1】:

在 GitHub 上,c0redumb 提出了一个完整的解决方案。您可以下载yqd.py。导入后,一行代码就可以得到雅虎财务数据,如图。

import yqd
yf_data = yqd.load_yahoo_quote('GOOG', '20170722', '20170725')

结果'yf_data'是:

['Date,Open,High,Low,Close,Adj Close,Volume',
 '2017-07-24,972.219971,986.200012,970.770020,980.340027,980.340027,3248300',
 '2017-07-25,953.809998,959.700012,945.400024,950.700012,950.700012,4661000',
 '']

【讨论】:

    【解决方案2】:

    进一步了解上面的回答并使用我上面发布的链接中的答案。 (归功于 saaj)。这仅提供了我需要的数据集,并且在调用模块时更整洁。我不确定参数 crumb 是什么,但是没有它似乎可以正常工作。

    import json
    from pprint import pprint
    from urllib.request import urlopen
    from urllib.parse import urlencode
    
    def parse():
        host   = 'https://query1.finance.yahoo.com'
        #host   = 'https://query2.finance.yahoo.com'  # try if above doesn't work
        path   = '/v10/finance/quoteSummary/%s' % 'ADP'
        params = {
            'formatted' : 'true',
            #'crumb'     : 'ILlIC9tOoXt',
            'lang'      : 'en-US',
            'region'    : 'US',
            'modules'   : 'earningsTrend',
            'domain'    : 'finance.yahoo.com'
        }
    
        response = urlopen('{}{}?{}'.format(host, path, urlencode(params)))
        data = json.loads(response.read().decode())
    
        pprint(data)
    
    if __name__ == '__main__':
        parse()
    

    其他模块(只需在它们之间添加一个逗号): 资产配置文件 财务数据 默认键统计 日历事件 收入报表历史 现金流量表历史 资产负债表历史 推荐趋势 升级降级历史 收益历史 收益趋势 行业趋势

    【讨论】:

      【解决方案3】:

      为了获取该数据,您需要打开 Chrome DevTools 并选择带有 XHR 过滤器的网络选项卡。如果您点击 ADP 请求,您可以在 RequestUrl 中看到链接。

      您可以使用Requests 库来发出请求并解析来自站点的 json 响应。

      import requests
      from pprint import pprint
      
      url = 'https://query1.finance.yahoo.com/v10/finance/quoteSummary/ADP?formatted=true&crumb=ILlIC9tOoXt&lang=en-US&region=US&modules=upgradeDowngradeHistory%2CrecommendationTrend%2CfinancialData%2CearningsHistory%2CearningsTrend%2CindustryTrend%2CindexTrend%2CsectorTrend&corsDomain=finance.yahoo.com'
      r = requests.get(url).json()
      pprint(r)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-20
        • 1970-01-01
        • 2016-05-28
        • 1970-01-01
        • 2012-11-19
        • 1970-01-01
        相关资源
        最近更新 更多