Hier ist der Standardpreis
`
## Schreiben Sie die Datenposition, die Sie in XPath erhalten möchten
XPath ist ein Format zur Darstellung der Position beliebiger Inhalte in einem HTML / XML-Dokument. Klicken Sie mit der rechten Maustaste auf Chrome-> Kopieren-> Xpfad kopieren
Sie können den XPath mit bekommen. (Siehe unten)
Einfach, XPath von jedem Knoten mit nur Chrome Maybe Revolution zu erhalten
Dieses Mal möchte ich alle td-Elemente der Tabelle unter dem div-Element von id = main haben, also habe ich Folgendes getan.
//*[@id="main"]/div/table//td
Holen Sie sich HTML mit parser () und extrahieren Sie die erforderlichen Elemente mit XPath
Von hier an machen wir das in Python. Übergeben Sie die URL an lxml.html.parser (), um HTML_Elements abzurufen und die von XPath angegebenen Elemente daraus zu extrahieren. Ordnen Sie das Modell schließlich an und geben Sie es als Liste des Modells [Datum, Basispreis, Gesamtnettovermögen] aus. Das Datum war schließlich eine Zeichenfolge des yyyymmdd-Modells.
getNAV.py
# -*- coding: utf-8 -*-
# python 2.7
import lxml.html
import datetime
def getNAV(fundcode, sy, sm, sd, ey, em, ed):
#Schieben Sie das Argument ins Diktat
d = dict(fundcode=fundcode, sy=sy, sm=sm, sd=sd, ey=ey, em=em, ed=ed)
#Entpacken Sie dict, um eine URL zu generieren
url = 'http://info.finance.yahoo.co.jp/history/?code={fundcode} \
&sy={sy}&sm={sm}&sd={sd}&ey={ey}&em={em}&ed={ed}&tm=d'.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 Konvertierung und Entfernung von Kommas
contents = map(lambda html: html.text.encode('utf-8').replace(',',''), tree.xpath('//*[@id="main"]/div/table//td'))
#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])
cap = int(contents[i+2])
res.append([date, price, cap])
return res
if __name__ == '__main__':
#Schieben Sie die Parameter in das Diktat
args = dict(fundcode='64311104', sy='2015', sm='12', sd='1', ey='2015', em='12', ed='20')
#Übergeben Sie das ganze Diktat und packen Sie es aus
print getNAV(**args)
Artikel, auf die verwiesen wird
lxml - Processing XML and HTML with Python
Tipps zum Scraping mit lxml
[Python] Notizen mit lxml kratzen
|