2017-08-16 106 views
0

我试图从Tripadvisor与Python 3 & lxml餐厅名称。我试图检索的文本在以下元素中,并在这种情况下被命名为“Al Fresco”。Xpath text()不返回文本

<a target="_blank" href="/Restaurant_Review-g293925-d8327527-Reviews- 
Al_Fresco_s-Ho_Chi_Minh_City.html" class="property_title" 
onclick="ta.restaurant_list_tracking.clickDetailTitle('/Restaurant_Review- 
g293925-d8327527-Reviews-Al_Fresco_s- 
Ho_Chi_Minh_City.html','tags_category_tag_restaurants','8327527','1','0');"> 
Al Fresco's 
</a> 

中的XPath参考这个元素:

//*[@id="eatery_8327527"]/div[2]/div[1]/div[1]/a 

我用下面简单的代码来检索该元素的文本:

from lxml import html 
import requests 

page = requests.get('https://www.tripadvisor.nl/Restaurants-g293925- 
Ho_Chi_Minh_City.html') 
tree = html.fromstring(page.content) 

#This will create a list of Names: 
Name = tree.xpath('//*[@id="eatery_8327527"]/div[2]/div[1]/div[1]/a/text()') 
print ('Name: ', Name) 

这将返回我空数组:名称:[] 如何获得我想要的文字?

+0

您可以发布一个实际的网址,让您发现这个元素? – Severin

+0

https://www.tripadvisor.nl/Restaurants-g293925-Ho_Chi_Minh_City.html#EATERY_OVERVIEW_BOX 然后检查餐厅的名称 – Jasper

回答

0

没有看看实际的页面,你的Xpath可能太严格了。试试这样:

//a[contains(@href,"Restaurant_Review")]/text() 

如果这样会产生太多的结果,请尝试在前面添加父项。

希望有所帮助。

UPDATE:

在实际的页面有一看后,这个我可能是你正在寻找:

//a[contains(@class,"property_title")]/text() 
+0

这会产生太多的结果,但给了我一些我可以使用的东西,谢谢! – Jasper

+0

@Jasper根据您提供的网址更新了答案。 – Severin

+0

如果它解决了你的问题,请接受答案:) – Severin