2016-05-12 1 views
1

У меня есть этот код в Python 2,7Как получить один элемент из Selector

 for product in response.xpath('//*[@class="s-result-item s-result-card-for-container s-carded-grid celwidget "]'): 

      print product 

результата каждого продукта является

<Selector xpath='//*[@class="s-result-item s-result-card-for-container s-carded-grid celwidget "]' data=u'<li id="result_18" data-asin="B00DO53DSY'> 

я хочу знать, как я могу извлечь каждые данные, такие как Data- ASIN

я попытался

product.xpath(//data-asin).extract() 

и это один

product.css ("Selector :: атр (данных ASIN)"). Экстракт()

ответ

2

Я ответил на мой собственный вопрос

product.css('li::attr(data-asin)').extract_first() 
2

Если вы хотите использовать XPath, вам нужно извлечь литиево с атрибутом data-sin:

product.xpath("./li/@data-sin").extract_first() 

данных-асин - это атрибут, а не тег, поэтому вам нужен синтаксис @.

+0

Я считаю, что это должно быть 'product.xpath (" .//@ data-asin ")' во втором случае. –

+1

@paultrmbrth, да, если у вас было несколько тегов, во втором примере я предварял *, если li был единственным тегом *, то есть, что тянет атрибут из тега, могут быть другие атрибуты data-asin, не относящиеся к li, поэтому Я не рекомендовал просто искать атрибут. Я полностью удалил его, чтобы избежать путаницы –

 Смежные вопросы

  • Нет связанных вопросов^_^