我正在尝试访问可在此处找到的表值 - https://www.sec.gov/Archives/edgar/data/320193/000119312515356351/d17062d10k.htm
具体来说,我试图访问2015年的净销售数字(即233,715),可以在10-K表格的第39页找到(见图)。
这是我的代码......
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'回来是空的 - 即。 []
我做错了什么?
答案 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