繁体   English   中英

Python LXML-返回空列表

[英]Python lxml - returns null list

尝试从网页表中提取值时,我无法弄清楚XPATH出了什么问题。 该方法似乎是正确的,因为我可以提取页面标题和其他属性,但是我不能提取第三个值,它总是返回一个空列表?

from lxml import html
import requests

test_url = 'SC312226'

page = ('https://www.opencompany.co.uk/company/'+test_url)

print 'Now searching URL: '+page

data = requests.get(page)
tree = html.fromstring(data.text)

print tree.xpath('//title/text()') # Get page title  
print tree.xpath('//a/@href') # Get href attribute of all links  
print tree.xpath('//*[@id="financial"]/table/tbody/tr/td[1]/table/tbody/tr[2]/td[1]/div[2]/text()')

除非我缺少任何东西,否则XPATH似乎是正确的:

Chrome屏幕截图

我检查了Chrome控制台,看起来还可以! 所以我很茫然

$x ('//*[@id="financial"]/table/tbody/tr/td[1]/table/tbody/tr[2]/td[1]/div[2]/text()')
[
"£432,272"
]

您应该指定元素名称。 如果您不想指定特定的标签名称,则可以使用*

print tree.xpath('//*[@id="financial"]/...')
                    ^

UPDATE

在html文件中(只是在浏览器中呈现之前的html),没有tbody标签。 因此,您需要从表达式中删除tbody

//*[@id="financial"]/table/tr/td[1]/table/tr[2]/td[1]/div[2]/text()

使用following-sibling轴的替代方法:

//div[text()="Total Assets"]/following-sibling::div/text()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM