2016-09-07 2 views
1

아래 코드를 PE 아래의 로이터 링크에서 추출 할 수 있습니다. 그러나 다른 주식의 웹 페이지가 두 줄 더 적어서 데이터 이동이 발생하므로 내 방식이 강력하지 않습니다. 어떻게하면이 문제가 발생할 수 있습니다. 데이터를 추출하기 위해 PE 부분을 직접 가리키고 싶지만 어떻게해야할지 모르겠다. 링크 1 : http://www.reuters.com/finance/stocks/financialHighlights?symbol=MYEG.KL 링크 2 : http://www.reuters.com/finance/stocks/financialHighlights?symbol=ANNJ.KL파이썬 : 내용을 추출하는 lxml xpath

from lxml import html 
import lxml 

page2 = requests.get('http://www.reuters.com/finance/stocks/financialHighlights?symbol=MYEG.KL') 
treea = html.fromstring(page2.content) 
tree4 = treea.xpath('//td[@class]/text()') 
PE= tree4[37] 

이것은 내가 웹 페이지의 변경이 영향을받지 않도록 코드는이 부분을 추출 할 수 있음을하고자하는 부분이다.

<tr class="stripe"> 
       <td>P/E Ratio (TTM)</td> 
       <td class="data">36.79</td> 
       <td class="data">25.99</td> 
       <td class="data">21.70</td> 
      </tr> 

답변

0

는 추출 첫 TD를 찾기 위해 텍스트를 사용하여 형제 TD의 :

treea.xpath('//td[contains(.,"P/E Ratio")]/following-sibling::td/text()') 

에 관계없이 작동합니다

In [8]: page2 = requests.get('http://www.reuters.com/finance/stocks/financialHighlights?symbol=MYEG.KL') 

In [9]: treea = html.fromstring(page2.content)  
In [10]: tree4 = treea.xpath('//td[contains(.,"P/E Ratio")]/following-sibling::td/text()') 

In [11]: print(tree4) 
['36.79', '25.99', '21.41'] 

In [12]: page2 = requests.get('http://www.reuters.com/finance/stocks/financialHighlights?symbol=ANNJ.KL') 
In [13]: treea = html.fromstring(page2.content) 

In [14]: tree4 = treea.xpath('//td[contains(.,"P/E Ratio")]/following-sibling::td/text()') 

In [15]: print(tree4) 
['--', '25.49', '17.30'] 
관련 문제