2015-07-20 60 views
1

我正致力於從tripadvisor獲取數據,但大多數第一個是相對日期,其餘的都是正常的MM/DD/YYYY,但仔細檢查I看到相對日期有這個如何從XPath中的class屬性獲取標題(Python/scrapy)

<span class="ratingDate relativeDate" title="20 June 2015">Reviewed 4 weeks ago 
</span> 

我使用這個XPath來獲取數據

response.xpath('//div[@class="col2of2"]//span[@class="ratingDate relativeDat 
e" or @class="ratingDate"]/text()').extract() 

我的問題是我如何加入@title,這樣我可以得到它具有正常的標題日期格式。

我試圖

response.xpath('//div[@class="col2of2"]//span[@class="ratingDate relativeDat 
e"/@title or @class="ratingDate"]/text()').extract() 

response.xpath('//div[@class="col2of2"]//span[@class="ratingDate relativeDat 
e" or @class="ratingDate"]/@title/text()').extract() 
+0

還忘了提,我不能有2周獨立的XPath因爲很難將其在打印到CSV – Smashed

+0

爲什麼不pipline格式化?將項目的字段設置爲其中一個XPath結果非常簡單。在這種情況下,解決方案對於您的管道是透明的。 – GHajba

+0

我只是相信,我可以將它設置爲相同的領域,直到相對用完,然後第二個接管。因此,讓我兩個Xpaths。但我仍然無法弄清楚如何調用標題屬性 – Smashed

回答

3

想通了你必須做一個條件語句,將動態檢查的XPath是否包含值或不蜘蛛。

這是我的翻譯。

item['date'] = sel.xpath('//*[@class="ratingDate relativeDate"]/@title').extract() 
item['date'] += sel.xpath('//div[@class="col2of2"]//span[@class="ratingDate"]/text()').extract()