Как получить значение в элементе <span>, используя xpath ()? - PullRequest
0 голосов
/ 24 апреля 2019

Я использовал scrapy-python для получения значения валюты 510,940 в элементе:

<span class="price-amount">
    <span class="currency_symbol">₫</span>
    510,940
</span>

И мой код:

item["price"] = response.xpath("//span[@class='price-amount']/text()").extract()

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

С вашим кодом я получаю ['\n ', '\n 510,940\n'].

Если вы хотите 510,940, вы можете использовать:

  • re:test(., '\d'), чтобы отфильтровать строки несодержащий числа

  • .get() (или .extract_first(), если вы хотите перейти в старое учебное заведение), чтобы извлечь отдельный элемент в виде строки вместо списка совпадающих строк.

  • .strip() для удаления окружающих пробелов, похожих на символы.

То есть:

response.xpath("//span[@class='price-amount']/text()[re:test(., '\d')]").get().strip()

Также для извлечения ценыВы можете использовать специализированную библиотеку, такую ​​как price-parser .

0 голосов
/ 24 апреля 2019

Вот код для price и currency:

>>> txt = """<span class="price-amount">
...     <span class="currency_symbol">₫</span>
...     510,940
... </span>"""
>>> sel = Selector(text=txt)
>>> sel.xpath('//span[@class="price-amount"]/span[@class="currency_symbol"]/following-sibling::text()').get()
u'\n    510,940\n'
>>> sel.xpath('//span[@class="price-amount"]/span[@class="currency_symbol"]/text()').get()
u'\u20ab'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...