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個符號。暫停URL請求下載
- 有沒有一種方法可以下載數據塊,比如像200個股票一次,暫停一段時間,然後再次恢復下載?
- 出口是一次一個股票;我如何一次寫入200,並將下一批次追加到最初的批次(CSV)?
謝謝你的回答,它沒有我需要的所有標題。像div,市值.. – showri
探索python_datareader,它可能只是你需要的數據。 – Merlin
@showri,不要小看大熊貓!在'pandas/io/tests/test_data.py'文件中搜索'MarketCap'字樣 – MaxU