Voici le prix standard
`
## Écrivez la position des données que vous souhaitez obtenir dans XPath
XPath est un format pour représenter la position d'un contenu arbitraire dans un document HTML / XML. Faites un clic droit dans Chrome-> Copier-> Copier Xpath
Vous pouvez obtenir le XPath avec. (Voir ci-dessous)
Facile à obtenir XPath de n'importe quel nœud avec juste la révolution Chrome Maybe
Cette fois, je veux tous les éléments td de la table sous l'élément div de id = main, donc j'ai fait comme suit.
//*[@id="main"]/div/table//td
Obtenez du HTML avec parser () et extrayez les éléments requis avec XPath
À partir de maintenant, nous le ferons en Python. Passez l'url à lxml.html.parser () pour obtenir HTML_Elements et en extraire les éléments spécifiés par XPath. Enfin, organisez le modèle et affichez-le sous forme de liste de modèles [Date, prix de base, actif net total]. La date était finalement une chaîne du modèle aaaammjj.
getNAV.py
# -*- coding: utf-8 -*-
# python 2.7
import lxml.html
import datetime
def getNAV(fundcode, sy, sm, sd, ey, em, ed):
#Poussez l'argument dans dict
d = dict(fundcode=fundcode, sy=sy, sm=sm, sd=sd, ey=ey, em=em, ed=ed)
#Décompressez dict pour générer une URL
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)
#Obtenez ElementTree
tree = lxml.html.parse(url)
#Date,Prix de base,Appliquer map et utf tout en obtenant tous les éléments de l'actif net-8 Conversion et suppression des virgules
contents = map(lambda html: html.text.encode('utf-8').replace(',',''), tree.xpath('//*[@id="main"]/div/table//td'))
#Parce que c'est une liste[[date, price, cap], [date, price, cap], ...]Divisez avec
res = []
for i in range(0, len(contents)-1, 3):
date = datetime.datetime.strptime(contents[i], '%Y année%m mois%jour j').strftime('%Y%m%d')
price = int(contents[i+1])
cap = int(contents[i+2])
res.append([date, price, cap])
return res
if __name__ == '__main__':
#Poussez les paramètres dans le dict
args = dict(fundcode='64311104', sy='2015', sm='12', sd='1', ey='2015', em='12', ed='20')
#Passez tout le dict et décompressez
print getNAV(**args)
Articles référencés
lxml - Processing XML and HTML with Python
Astuces pour gratter avec lxml
[Python] Scraping notes with lxml
|