Python 多线程技术让雅虎财务陷入困境
我正在运行一个程序,从雅虎获取一些信息!金融。它作为Python 多线程技术让雅虎财务陷入困境,python,multithreading,yahoo-finance,Python,Multithreading,Yahoo Finance,我正在运行一个程序,从雅虎获取一些信息!金融。它作为For循环运行良好,但是需要很长时间(对于7000个输入,大约10分钟),因为它必须单独处理每个请求。get(url)(或者我在主要瓶颈问题上弄错了?) 无论如何,我发现多线程是一种潜在的解决方案。这就是我尝试过的: import requests import pprint import threading with open('MFTop30MinusAFew.txt', 'r') as ins: #input file for tick
For
循环运行良好,但是需要很长时间(对于7000个输入,大约10分钟),因为它必须单独处理每个请求。get(url)
(或者我在主要瓶颈问题上弄错了?)
无论如何,我发现多线程是一种潜在的解决方案。这就是我尝试过的:
import requests
import pprint
import threading
with open('MFTop30MinusAFew.txt', 'r') as ins: #input file for tickers
for line in ins:
ticker_array = ins.read().splitlines()
ticker = ticker_array
url_array = []
url_data = []
data_array =[]
for i in ticker:
url = 'https://query2.finance.yahoo.com/v10/finance/quoteSummary/'+i+'?formatted=true&crumb=8ldhetOu7RJ&lang=en-US®ion=US&modules=defaultKeyStatistics%2CfinancialData%2CcalendarEvents&corsDomain=finance.yahoo.com'
url_array.append(url) #loading each complete url at one time
def fetch_data(url):
urlHandler = requests.get(url)
data = urlHandler.json()
data_array.append(data)
pprint.pprint(data_array)
threads = [threading.Thread(target=fetch_data, args=(url,)) for url in url_array]
for thread in threads:
thread.start()
for thread in threads:
thread.join()
fetch_data(url_array)
我得到的错误是InvalidSchema:找不到“[”的连接适配器https://query2.finance.... [url继续]
另外,我还读到,使用多线程方法来抓取网站是不好的/会让你被阻止。雅虎财经会介意我一次从几千个股票代码中提取数据吗?当我按顺序提取数据时,什么都没有发生。如果你仔细查看错误,你会注意到它没有显示一个url,而是显示了你附加的所有url,用括号括起来。实际上,代码的最后一行实际上调用了方法fetch_data,并将完整数组作为参数,这是没有意义的。如果删除最后一行,代码运行正常,线程也会按预期调用。如果仔细查看错误,您会注意到它不会显示一个url,而是所有url您附加的URL,用括号括起来。事实上,代码的最后一行实际上调用了您的方法fetch_data,并将完整数组作为参数,这是没有意义的。如果删除最后一行,代码运行正常,线程也按预期调用。我将指出,Pypi非常适合向Yah发出请求oo!finance。这无助于更快地发出更多请求,但这比需要编写自己的逻辑来获取值要好得多。我已经看到了!但他们没有我需要的所有数字的方法。我要指出,Pypi非常适合向Yahoo!finance发出请求。这无助于更快地发出更多请求,但这将是一个很好的解决方案比需要编写自己的逻辑来获取值要好得多。我已经看到了!但是他们没有我需要的所有数字的方法。