空列表LXML XPATH

问题描述 投票:-1回答:1

我在从提供的链接(https://www.avisosdeocasion.com/Resultados-Inmuebles.aspx?n=venta-casas-nuevo-leon&PlazaBusqueda=2&Plaza=2.html)中遇到问题,我试图从每个表('2 plantas ... 3 plantas,等等)中获取第一个信息,但是我收到的是空的lis从下面的代码:

from lxml import html
import requests
mark=2
page = requests.get('https://www.avisosdeocasion.com/Resultados-Inmuebles.aspx?n=venta-casas-nuevo-leon&PlazaBusqueda=2&Plaza=2.html')
tree = html.fromstring(page.content)
while mark<25:
    plantas=tree.xpath('//*[@id="divDetalleResultados"]/table/tbody/tr/td/table[mark]/tbody/tr[1]/td/table/tbody/tr/td[2]/table/tbody/tr[2]/td/table/tbody/tr[1]/td[1]/text()')
    mark=mark+1
print(plantas)

有人知道如何解决此问题吗?

html xpath lxml
1个回答
0
投票

您需要修复XPath表达式。这样的事情应该工作:

from lxml import html
import requests
page = requests.get('https://www.avisosdeocasion.com/Resultados-Inmuebles.aspx?n=venta-casas-nuevo-leon&PlazaBusqueda=2&Plaza=2.html')
tree = html.fromstring(page.content)
plantas = tree.xpath('//td[contains(text(),"terreno")]/preceding-sibling::td/text()')
plantas2 = [item.strip() for item in plantas]
print(plantas2)

输出:

['2 plantas', '3 plantas', '3 plantas', '2 plantas', '2 plantas', '2 plantas', '2 plantas', '2 plantas', '2 plantas', '2 plantas', '2 plantas', '2 plantas', '2 plantas', '2 plantas', '2 plantas', '2 plantas', '2 plantas', '2 plantas', '2 plantas', '2 plantas', '2 plantas', '3 plantas', '2 plantas', '2 plantas']
© www.soinside.com 2019 - 2024. All rights reserved.