Es ist ein Skript, das Python und lxml verwendet, um den Grundpreis eines Investment Trusts von der Website der Investment Trusts Association (umfassende Investment Trust-Suchbibliothek) durch Web-Scraping abzurufen. In Bezug auf die zuvor veröffentlichte Yahoo! Finance-Version war das Web-Scraping von Yahoo! Finance durch die Regeln verboten, daher habe ich es stattdessen erstellt.
Es wird auf GitHub veröffentlicht. Klicken Sie hier, um die neueste Version anzuzeigen sawadyrr5 / PyFundJP: Informationsbeschaffungsskript für Investment Trusts in Japan
Die Suche erfolgt nach ISIN-Code anstelle von Fondscode, aber die grundlegende Syntax ist genau dieselbe.
getNAV
# -*- coding: utf-8 -*-
# python 2.7
#Scraping von Basispreisdaten der Investment Trusts Association
import lxml.html
import datetime
def getNAV(isin, sy, sm, sd, ey, em, ed):
#Schieben Sie das Argument ins Diktat
d = dict(isin=isin, sy=sy, sm=sm, sd=sd, ey=ey, em=em, ed=ed)
#Entpacken Sie dict, um eine URL zu generieren
url = 'http://tskl.toushin.or.jp/FdsWeb/view/FDST030004.seam?isinCd={isin}\
&stdDateFromY={sy}&stdDateFromM={sm}&stdDateFromD={sd}\
&stdDateToY={ey}&stdDateToM={em}&stdDateToD={ed}&showFlg=1&adminFlag=1'.format(**d)
#Holen Sie sich ElementTree
tree = lxml.html.parse(url)
#Datum,Grundpreis,Wenden Sie map und utf an, während Sie alle Elemente des Nettovermögens abrufen-8 Umwandlung
contents = map(lambda html: html.text.encode('utf-8').replace('\n',''), tree.xpath('//*[@id="showList"]//label'))
#Weil es eine Liste ist[[date, price, cap], [date, price, cap], ...]Teilen mit
res = []
for i in range(0, len(contents)-1, 3):
date = datetime.datetime.strptime(contents[i], '%Y Jahr%m Monat%d Tag').strftime('%Y%m%d')
price = int(contents[i+1].replace(',','').replace('Kreis',''))
cap = contents[i+2].replace(',','').replace('100 Millionen Yen','')
res.append([date, price, cap])
return res
if __name__ == '__main__':
#Schieben Sie die Parameter in das Diktat(Japanisches Alpha-Quartett (monatliche Vertriebsart))
args = dict(isin='JP90C000A931', sy='2015', sm='12', sd='01', ey='2015', em='12', ed='31')
#Übergeben Sie das ganze Diktat und packen Sie es aus
print getNAV(**args)
Recommended Posts