如何在python中使用xpath访问表值

时间:2017-06-18 14:30:14

标签: python xml xpath

我正在尝试访问可在此处找到的表值 - https://www.sec.gov/Archives/edgar/data/320193/000119312515356351/d17062d10k.htm

具体来说,我试图访问2015年的净销售数字(即233,715),可以在10-K表格的第39页找到(见图)。

enter image description here

这是我的代码......

from lxml import html
import requests

SEC_page = requests.get('https://www.sec.gov/Archives/edgar/data/320193/000119312515356351/d17062d10k.htm')
SEC_tree = html.fromstring(SEC_page.content)

Description = SEC_tree.xpath('//html/body/document/type/sequence/filename/description/text()')
Sales_2015 = SEC_tree.xpath('//html/body/document/type/sequence/filename/description/text/table[48]/tbody/tr[4]/td[4]/font/text()')

print Description
print Sales_2015

我们可以看到'描述'打印 - 即。 ['表格10-K \ n',' \ n']

然而,' Sales_2015'回来是空的 - 即。 []

我做错了什么?

1 个答案:

答案 0 :(得分:1)

使用绝对XPath 时,很难调试并在表达式中发现问题。你应该避免使用绝对XPath。请注意,您需要table[48] 48,Carl!您最好使用 relative XPath ,因为它更灵活,更可靠,更详细:

(//p[contains(., "CONSOLIDATED STATEMENTS OF OPERATIONS")]/following::td[contains(.,"Net sales")]/following-sibling::td[@align="right"]//text())[1]

在这里,我们首先找到带有文字"CONSOLIDATED STATEMENTS OF OPERATIONS"的表格的标题,然后找到下表格单元格"Net sales"并抓取同一行中的第一个数字233,715