У меня есть страница, на которой я пытаюсь получить цену. Вот загляните на линию.xpath tag не уверен, что положить
<div itemprop="price" class="js-price-display Price Price--flair Price--medium hide-content-m price-display"> <span class="Price-sup">$</span>34<span class="Price-mark">.</span>96 </div>']
Я пробовал кучу разных способов получить его, но не дотягиваю. Лучшее, что я получил это 2. (цена составляет $ 34,96, кстати)
selector.xpath('//div[@itemprop="price"]/text()').extract()
, который дает мне
[u' ', u'34', u' ', u' ', u'34', u'96 ']
и таким образом
selector.xpath('//div[@class="js-price-display Price Price--flair Price--medium hide-content-m price-display"]').extract()
, который дает мне этот результат
[u'<div itemprop="price" class="js-price-display Price Price--flair Price--medium hide-content-m price-display"> <span class="Price-sup">$</span>34<span class="Price-mark">.</span>96 </div>']
Если у меня есть только спа n он дает мне $ и. но я не знаю, что этот атрибут (или свойство или ценность или что-то еще) его называют «после» пролета там в конце, где фактическая сумма. Я хотел бы получить первую часть, период и вторую часть, но я возьму что-нибудь лучше, чем то, что у меня есть. Наконец, я запустил этот бит тестового кода, чтобы увидеть свойства куска веб-страницы, которую я там разместил. Вот что я запустил
for item in selector.xpath('.//*[@itemprop]'):
print "Item:", item.xpath('@itemtype').extract()
for property in item.xpath('.//*[@itemprop]'):
print "Property:",
print property.xpath('@itemprop').extract(),
print property.xpath('string(.)').extract()
for position, attribute in enumerate(property.xpath('@*'), start=1):
print "attribute: name=%s; value=%s" % (
property.xpath('name(@*[%d])' % position).extract(),
attribute.extract())
print
print
и получил эти результаты.
C:\Python27\bff\bff\spiders>python test.py
Item: [u'http://schema.org/Offer']
Property: [u'priceCurrency'] [u'']
attribute: name=[u'itemprop']; value=priceCurrency
attribute: name=[u'content']; value=USD
Property: [u'price'] [u' $34.96 ']
attribute: name=[u'itemprop']; value=price
attribute: name=[u'class']; value=js-price-display Price Price--stylized Price--large hide-content display-inline-m price-display
Property: [u'price'] [u' $34.96 ']
attribute: name=[u'itemprop']; value=price
attribute: name=[u'class']; value=js-price-display Price Price--flair Price--medium hide-content-m price-display
Property: [u'availability'] [u'']
attribute: name=[u'itemprop']; value=availability
attribute: name=[u'itemtype']; value=http://schema.org/ItemAvailability
attribute: name=[u'content']; value=InStock
Как это похоже на БУМ, точно так же, как мне нужно, чтобы показать, и я не могу его получить? Я попытался использовать оба этих класса и обе эти значения itemprop и продолжать получать материал, похожий на то, что я разместил. Заранее спасибо за помощь.
Пригвожден! Я получал все в теге, но не знал, что его изменение в строку будет обрезать только текст! Спасибо, что помог мне сохранить разум. – Nick