/ / Scrapy: przechowuj dane z częścią zagnieżdżonego tagu w jednym polu elementu - python, xpath, skrobanie w sieci, scrapy

Scrapy: przechowuj dane z częścią w zagnieżdżonym tagu w jednym polu przedmiotu - python, xpath, web scraping, scrapy

Mam następujący problem: „Skrobię ceny ze strony internetowej i działa, ale pobiera tylko liczby przed przecinkiem.

Przykład: gdy coś jest warte „79 €,90„zeskrobuje tylko 79, a nie 90.

<span class="price right right10">
€ 79,
<sup>
90*
</sup>
</span>

Chcę to zapisać w jednym polu tego typu:

class Prices(scrapy.Item):
price = scrapy.Field()

To jest mój obecny selektor xpath:

item["price"] = "".join(sel.xpath("div[@class="waresSum"]/p/span/text()").extract())

Odpowiedzi:

3 dla odpowiedzi № 1

Kluczowym problemem jest to, że pytasz o bezpośrednie węzły potomne tekstu span, musisz pobrać wszystkie węzły tekstowe z wnętrza span element:

//div[@class="waresSum"]/p/span//text()
HERE^

Również użyłbym .re() odfiltrować niechciane postacie i uzyskać tylko cyfry, , i -:

$ scrapy shell index.html
In [9]: "".join(response.xpath("//span//text()").re(r"[0-9,-]+"))
Out[9]: u"79,90"