我在从提供的链接(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)
有人知道如何解决此问题吗?
您需要修复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']