繁体   English   中英

python抓取雅虎财务

[英]python web-scraping yahoo finance

自雅虎财经更新其网站以来。 有些表似乎是动态创建的,而不是实际存储在HTML中的(我以前使用BeautifulSoup,urllib来获取此信息,但现在不再起作用了)。 我在分析表(例如ADP)之后,特别是在前几年EPS(当前年列)的收入估算中。 您无法从API获取此信息。

我发现此链接非常适合“分析师建议趋势”。 有谁知道如何针对此页面上的主表执行类似操作? (链接: 来自yahoo的python lxml etree applet信息

我试图遵循所采取的步骤,但坦率地说,它超出了我。 我需要返回整张桌子,我可以从那里挑选出一些东西。 干杯

为了获取该数据,您需要打开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)

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

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()

其他模块(只需在它们之间添加逗号):assetProfileprofiledataData默认defaultKeyStatistics日历事件incomeStatementHistory现金流StatementHistory余额SheetHistory建议趋势升级降级History收益History收益趋势行业趋势

在GitHub中, c0redumb提出了一个完整的解决方案。 您可以下载yqd.py。 导入后,您可以通过一行代码获得Yahoo财务数据,如下所示。

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',
 '']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM