对于您的第一个 xpath,由于单斜杠,您仅选择作为 div 的直接子级的文本节点。这可能不是您所期望的,您想要的是所有作为div 的后代 的文本节点,而不仅仅是子节点。尝试使用双斜杠。 //div[@id="property-info-col1"]//text()
在 Python 中做一些测试:
In [1]: from lxml import html
In [2]: f = open('travelpage.html', 'r')
In [3]: root = html.fromstring(f.read())
...
In [8]: root.xpath('//div[@id="property-info-col1"]/text()')
Out[8]: ['\n', '\n']
In [9]: root.xpath('//div[@id="property-info-col1"]//text()')
Out[9]:
['\n',
'\n',
'Property Type',
'\n',
'House',
'\n',
'Listing Type',
'\n',
'For Sale',
'\n',
'Location',
'\n',
'Camphersdrift, George',
'\n',
'Price',
'\n',
'\nR 13,975,000\n· ',
'Get Pre-Qualified',
'\n',
'\n',
'Price per m²',
'\n',
'R 11,569',
'\n',
'Floor Size',
'\n',
'535 m²',
'\n',
'Erf Size',
'\n',
'1208 m²',
'\n',
'\n']