Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从雅虎下载数据!财务_Python_Pandas_Beautifulsoup_Yahoo Finance - Fatal编程技术网

Python 从雅虎下载数据!财务

Python 从雅虎下载数据!财务,python,pandas,beautifulsoup,yahoo-finance,Python,Pandas,Beautifulsoup,Yahoo Finance,嗨,我最近参加了一个关于比特币分析的项目,需要从雅虎下载财务数据!通过Python提供金融服务。我试着修复雅虎财经和熊猫数据阅读器,但下载文件时网站上似乎有一个bug。它总是错过一些日子。所以我决定用靓汤,代码如下: import requests import time import pandas as pd from bs4 import BeautifulSoup def time_convert(dt): time.strptime(dt,'%Y-%m-%d %H:%M:%S'

嗨,我最近参加了一个关于比特币分析的项目,需要从雅虎下载财务数据!通过Python提供金融服务。我试着修复雅虎财经和熊猫数据阅读器,但下载文件时网站上似乎有一个bug。它总是错过一些日子。所以我决定用靓汤,代码如下:

import requests
import time
import pandas as pd
from bs4 import BeautifulSoup

def time_convert(dt):
    time.strptime(dt,'%Y-%m-%d %H:%M:%S')
    s = time.mktime(time.strptime(dt,'%Y-%m-%d %H:%M:%S'))
    return str(int(s))

s = requests.Session()
start = time_convert("2016-02-15 00:00:00")
end   = time_convert("2018-02-15 00:00:00")

r = s.get("https://uk.finance.yahoo.com/quote/BTC-USD/history?period1="+start+"&period2="+end+"&interval=1d&filter=history&frequency=1d"

soup = BeautifulSoup(r.text, 'lxml')
tables = soup.select('table')

df_list = []
for table in tables:
    df_list.append(pd.concat(pd.read_html(table.prettify())))
    df = pd.concat(df_list)
    df.to_excel("E:\PythonData\price_"+'.xlsx')

它可以工作,但数据不完整,因为当鼠标向下滚动到页面末尾时,网站会加载数据,但代码不会这样做。我该如何解决这个问题呢?

雅虎过去有一个财务api,但他们已经终止了它,尽管有一个解决办法


我以前用过success,你可能想看看它。

你试过用Yahoo Financials吗?它建造得很好,而且不容易损坏;不要丢弃网页。它从[“上下文”][“调度程序”][“存储”]对象散列出所需的数据。它速度很快,而且建造得很好

$pip安装yahoofinancials

用法示例:

from yahoofinancials import YahooFinancials

tech_stocks = ['AAPL', 'MSFT', 'INTC']
bank_stocks = ['WFC', 'BAC', 'C']

yahoo_financials_tech = YahooFinancials(tech_stocks)
yahoo_financials_banks = YahooFinancials(bank_stocks)

tech_cash_flow_data_an = yahoo_financials_tech.get_financial_stmts('annual', 'cash')
bank_cash_flow_data_an = yahoo_financials_banks.get_financial_stmts('annual', 'cash')

banks_net_ebit = yahoo_financials_banks.get_ebit()
tech_stock_price_data = tech_cash_flow_data.get_stock_price_data()
daily_bank_stock_prices = yahoo_financials_banks.get_historical_stock_data('2008-09-15', '2017-09-15', 'daily')
输出示例:

yahoo_financials = YahooFinancials('WFC')
print(yahoo_financials.get_historical_stock_data("2017-09-10", "2017-10-10", "monthly"))
返回

{
    "WFC": {
        "prices": [
            {
                "volume": 260271600,
                "formatted_date": "2017-09-30",
                "high": 55.77000045776367,
                "adjclose": 54.91999816894531,
                "low": 52.84000015258789,
                "date": 1506830400,
                "close": 54.91999816894531,
                "open": 55.15999984741211
            }
        ],
        "eventsData": [],
        "firstTradeDate": {
            "date": 76233600,
            "formatted_date": "1972-06-01"
        },
        "isPending": false,
        "timeZone": {
            "gmtOffset": -14400
        },
        "id": "1mo15050196001507611600"
    }
}

首先谢谢你。我下载了这个软件包,但不知道如何调用它的函数。你能提供一些例子吗?像运行任何其他python库一样运行安装脚本,导入它并使用load_yahoo_quote函数,ticker是一些字符串,可能是“BTC-USD”,在你的例子中,begindate和enddate是自明的。它起作用了,该函数称为“load_yahoo_quote”。但是下载的数据是一系列的列表,你能告诉我如何将其转换成数据帧吗?谢谢!idk你想要什么,但谷歌是你最好的朋友,如果你只是想要一个excel文件,csv就足够好了,实际上它是一个字符串列表,每个字符串是一行所有数据,包括价格和日期,用“,”分隔。我想知道是否有办法将数据传输到数据帧。。。。