2016-02-20 110 views
0

你好我试图在一个页面来提取标签数据,以提取标签数据无法使用python路径

页是 https://www.kickstarter.com/projects/1311034023/priva-the-invincible-and-reusable-camera-privacy-s/description

,我试图提取位置

纽约布鲁克林

我正在使用下面的Python代码以及路径(使用谷歌浏览器检查)。

test_page= requests.get('https://www.kickstarter.com/projects/1311034023/priva-the-invincible-and-reusable-camera-privacy-s/description') 
test_pagetree= html.fromstring(test_page.content) 

testxpath= test_pagetree.xpath('//*[@id="content-wrap"]/section/div[2]/div[2]/div[1]/div/div[1]/div/a[1]/text()') 
print testxpath 
+0

这个问题如何与你的[上一个]不同(http://stackoverflow.com/questions/35402310/not-able-to-scrap-location-using-python)? – kjhughes

+1

@kjhughes:不同的URL和XPath表达式。奎师那,如果您以前的问题不再有效,请关闭/删除它。对于这个问题,你告诉我们你尝试过什么,你想要什么结果;也请告诉你实际得到的结果以及与你想要的有什么不同。 – LarsH

+1

好的,为了增加您的建议,这两个问题应该是独立的,而不是依赖于随着时间的推移可能会改变或消失的外部链接。 – kjhughes

回答

1

尝试:

testxpath = test_pagetree.xpath('//span[contains(@class, "ksr-icon__location")]/following-sibling::text()[1]') 

换句话说,找到具有class属性值中包含的"ksr-icon__location"元件span(多个),并提取下面的文本节点。

这将返回两个文本节点,每个节点包含Brooklyn, NY。挑选第一个:

print testxpath[0].text 

你不能只是告诉你的浏览器“给我这个元素的XPath的”,并认为XPath表达式将始终工作。例如,浏览器中显示的HTML结构可能会从从服务器获取的HTML中修改(并由网络抓取程序抓取)。

XPath通常可以克服这些可能的差异,如果您知道如何使用它。但它是一个功能强大且复杂的工具,是一种完整的查询语言。如果您要进行网络抓取,值得学习XPath如何工作(或其他工具,并使用它)。

+0

谢谢@ LarsH我会记住你的建议。 –