【问题标题】:Xpath Yahoo FinanceXpath 雅虎财经
【发布时间】:2018-08-27 06:56:55
【问题描述】:

我正在尝试从雅虎获取数据,主要是股票的 EV/EBITDA。

我尝试使用来自 chrome 的 xpath 来获取返回 [] 的文本;即使在删除“tbody”之后

from lxml import html
import requests

page = requests.get('https://finance.yahoo.com/quote/AAPL/key-statistics? 
p=')
tree = html.fromstring(page.content)
data = tree.xpath('//*[@id="Col1-0-KeyStatistics- 
Proxy"]/section/div[2]/div[1]/div[1]/div/table/tbody/tr[9]/td[2]/text()')

print(data)

我再次删除了 tbody ,结果仍然得到 [] 。

我已经能够使用以下内容取回一些文本。

from lxml import html
import requests

而 1:

tick = input('Type in stock ticker:  ')

page = requests.get('https://finance.yahoo.com/quote/' + tick + '/key-statistics?p=')
tree = html.fromstring(page.content)
data = tree.xpath('//*[@class="Fz(s) Fw(500) Ta(end)"]/text()')

print('\n') 
print( tick + '-EV/EBITDA' + ':' +data[8])
print('\n')
pass

这适用于大多数股票,但是由于某些股票缺少数据,返回的第 9 个值并不总是 EV/EBITDA。网络上有文本“N/A”,但脚本没有占位符,因此空字段会导致数据移动。

结果:

Type in stock ticker:  AAPL


AAPL-EV/EBITDA:13.81


Type in stock ticker:  DRIO


DRIO-EV/EBITDA:-221.56%


Type in stock ticker: 

DRIO 在 EV/EBITDA 之前缺少一些数据,因此返回了错误的值。

我需要让上面的代码有 N/A 值的占位符。 或者 通过首选 xpath 正确获取 EV/EBITDA。

我是编码新手

【问题讨论】:

    标签: python-3.x xpath python-requests lxml yahoo-finance


    【解决方案1】:

    想通了。在 text() 之前添加了 // 而不是 / 这返回 N/A,其中 N/A 值而不是什么都没有,因此返回列表中的第 8 项总是 EV/EBITDA,这也使我可以轻松地提取其他数据用于股票。

    from lxml import html
    import requests
    
    while 1:
    tick = input('Type in stock ticker:  ')
    
    page = requests.get('https://finance.yahoo.com/quote/' + tick + '/key-statistics?p=')
    tree = html.fromstring(page.content)
    data = tree.xpath('//*[@class="Fz(s) Fw(500) Ta(end)"]//text()')
    
    print('\n') 
    print( tick)
    print('Market Cap' + ': ' + data[0])
    print('Enterprise Value' + ': ' + data[1])
    print('P/E' + ': ' + data[2])
    print('PEG' + ': ' + data[4])
    print('P/S' + ': ' + data[5])
    print('P/B' + ': ' + data[6])
    print('EV/EBITDA' + ': ' + data[8])
    print('\n')
    pass
    

    将为股票代码“AAPL”返回以下内容

    Type in stock ticker:  AAPl
    
    
    AAPl
    Market Cap: 1.05T
    Enterprise Value: 1.09T
    P/E: 19.74
    PEG: 1.42
    P/S: 4.12
    P/B: 9.18
    EV/EBITDA: 13.85
    
    
    Type in stock ticker:  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-06
      • 1970-01-01
      • 2014-05-24
      相关资源
      最近更新 更多