【发布时间】: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