暂停URL请求下载 [英] Pause URL request Downloads

查看:136
本文介绍了暂停URL请求下载的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

import urllib.request
import re
import csv
import pandas as pd
from bs4 import BeautifulSoup

columns = []
data = []
f = open('companylist.csv')
csv_f = csv.reader(f)

for row in csv_f:
    stocklist = row
    print(stocklist)

    for s in stocklist:
        print('http://finance.yahoo.com/q?s='+s)
        optionsUrl = urllib.request.urlopen('http://finance.yahoo.com/q?s='+s).read()
        soup = BeautifulSoup(optionsUrl, "html.parser")
        stocksymbol = ['Symbol:', s]
        optionsTable = [stocksymbol]+[
        [x.text for x in y.parent.contents]
        for y in soup.findAll('td', attrs={'class': 'yfnc_tabledata1','rtq_table': ''})
        ]
        if not columns:
            columns = [o[0] for o in optionsTable] #list(my_df.loc[0])
        data.append(o[1] for o in optionsTable)




# create DataFrame from data
df = pd.DataFrame(data, columns=columns)
df.to_csv('test.csv', index=False)

当我有大约200到300只股票时,这些脚本可以正常工作,但是我的公司列表中大约有6000个符号.

The scripts works fine when I have about 200 to 300 stocks, but my company list has around 6000 symbols.

  1. 有没有一种方法可以一次下载200股股票,暂停一段时间,然后再次恢复下载?
  2. 出口一次是一种库存;出口是一次库存.如何一次写入200,然后将下一个批次附加到初始批次(对于CSV)?

推荐答案

正如@Merlin所建议的-仔细研究pandas_datareader模块-您可以使用此工具完成很多任务.这是一个小例子:

As @Merlin has recommended you - take a closer look at pandas_datareader module - you can do a LOT using this tool. Here is a small example:

import csv
import pandas_datareader.data as data
from pandas_datareader.yahoo.quotes import _yahoo_codes

stocklist = ['aapl','goog','fb','amzn','COP']

#http://www.jarloo.com/yahoo_finance/
#https://greenido.wordpress.com/2009/12/22/yahoo-finance-hidden-api/
_yahoo_codes.update({'Market Cap': 'j1'})
_yahoo_codes.update({'Div Yield': 'y'})
_yahoo_codes.update({'Bid': 'b'})
_yahoo_codes.update({'Ask': 'a'})
_yahoo_codes.update({'Prev Close': 'p'})
_yahoo_codes.update({'Open': 'o'})
_yahoo_codes.update({'1 yr Target Price': 't8'})
_yahoo_codes.update({'Earnings/Share': 'e'})
_yahoo_codes.update({"Day’s Range": 'm'})
_yahoo_codes.update({'52-week Range': 'w'})
_yahoo_codes.update({'Volume': 'v'})
_yahoo_codes.update({'Avg Daily Volume': 'a2'})
_yahoo_codes.update({'EPS Est Current Year': 'e7'})
_yahoo_codes.update({'EPS Est Next Quarter': 'e9'})

data.get_quote_yahoo(stocklist).to_csv('test.csv', index=False, quoting=csv.QUOTE_NONNUMERIC)

输出:我特意转置了结果集,因为有太多的列无法在此处显示它们

Output: i've intentionally transposed the result set, because there are too many columns to show them here

In [2]: data.get_quote_yahoo(stocklist).transpose()
Out[2]:
                                aapl             goog                 fb                 amzn                COP
1 yr Target Price             124.93           924.83             142.87               800.92              51.23
52-week Range         89.47 - 132.97  515.18 - 789.87   72.000 - 121.080  422.6400 - 731.5000  31.0500 - 64.1300
Ask                            97.61           718.75             114.58               716.73              44.04
Avg Daily Volume         3.81601e+07      1.75567e+06        2.56467e+07          3.94018e+06        8.94779e+06
Bid                             97.6           718.57             114.57               716.65              44.03
Day’s Range            97.10 - 99.12  716.51 - 725.44  113.310 - 115.480  711.1600 - 721.9900  43.8000 - 44.9600
Div Yield                       2.31              N/A                N/A                  N/A               4.45
EPS Est Current Year            8.28             33.6               3.55                 5.39              -2.26
EPS Est Next Quarter            1.66             8.38               0.87                 0.96              -0.48
Earnings/Share                  8.98            24.58              1.635                2.426             -4.979
Market Cap                   534.65B          493.46B            327.71B              338.17B             54.53B
Open                            98.6           716.51                115               713.37              43.96
PE                             10.87            29.25             70.074              295.437                N/A
Prev Close                     98.83           719.41             116.62               717.91              44.51
Volume                   3.07086e+07           868366        2.70182e+07          2.42218e+06        5.20412e+06
change_pct                    -1.23%           -0.09%            -1.757%             -0.1644%           -1.0782%
last                           97.61           718.75            114.571               716.73            44.0301
short_ratio                     1.18             1.41               0.81                 1.29               1.88
time                          3:15pm           3:15pm             3:15pm               3:15pm             3:15pm

如果您需要更多字段(Yahoo Finance API的代码),则可能需要检查以下链接:

If you need more fields (codes for Yahoo Finance API) you may want to check the following links:

http://www.jarloo.com/yahoo_finance/

https://greenido.wordpress.com/2009 /12/22/yahoo-finance-hidden-api/

这篇关于暂停URL请求下载的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆