2016-11-08 5 views
0
<td> <span class="data_lbl updated-daily">P/E Ratio <small class="data_meta">(including extraordinary items)</small></span> <span class="data_data"> <span class="marketDelta deltaType-negative">-69.83</span> </span> </td> 

So extrahieren Daten PE Verhältnisdaten '-69.83' in einer robusten Weise? Ich möchte es direkt auf das P/E-Verhältnis zeigen.python: xpath lxml zum Extrahieren von Daten

from lxml import html 
import requests 

StockData =['AASIA'] 
page_wsj1 = requests.get('http://quotes.wsj.com/MY/'+StockData[x]+'/financials') 
wsj1 = html.fromstring(page_wsj1.content) 
PE = wsj1.xpath('//td[contains(.,"P/E Ratio")]/text()') 

aber das Ergebnis ist [ '', '', '', '', '']

wsj1.xpath('//td[normalize-space(span) = "P/E Ratio"]/span[@class = "data_data"]/span/text()') 

auch dazu führen, []

+2

hast du versucht etwas zu schreiben? – Dekel

+0

Das ist ein Duplikat von http://stackoverflow.com/questions/40488422/python-get-data-from-changing-span-class-using-lxml-xpath – Markus

+0

Sie vermissen ein 'span'. – Markus

Antwort

0
//td[normalize-space(span/text()) = "P/E Ratio"]/span[@class = "data_data"]/span 

oder

//td[contains(normalize-space(span), "P/E Ratio")]/span[@class = "data_data"]/span 
+0

dank verwenden. Es klappt! Können Sie hinzufügen, wie es mit contains() geht? – vindex

+0

@vindex Antwort aktualisiert – Markus