Как получить только один элемент в xpath на тег? - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь извлечь атрибуты с веб-сайта, но получить пустые элементы.

Использование этого кода в оболочке Srapy:

fetch('https://www.chronext.de/breitling/galactic/w7234812-a785-249s-a12d-4/C79467')

from w3lib.html import remove_tags
[remove_tags(w).strip() for w in response.xpath('//table[@class="compact margin-top-half"][1]/tr/td[2]/text()').extract()]

Я получаю:

['C77316', '279175', 'Damen', 'Automatik', '28\xa0mm', 'Roségold', 'Roségold', 'Saphirglas', '', '', '', '2018', 'Originale Box', 'Originale Hersteller Papiere', 'CHRONEXT Echtheitszertifikat', 'Zusätzlich zur Herstellergarantie erhalten Sie eine 2-jährige CHRONEXT Garantie ab Kaufdatum.']

Что удивительно, так как я нацелился на второй блок с / div [2], но вместо этого получил элементы из обоих блоков.

Я также попробовал это:

[x.strip() for x in response.xpath('//div[@class="row force-inside-container-behavior"]/div[2]/table/tr/td[2]/text()').extract()]

, который возвращаетthis:

['', '', '', '2018', 'Originale Box', 'Originale Hersteller Papiere', 'CHRONEXT Echtheitszertifikat', 'Zusätzlich zur Herstellergarantie erhalten Sie eine 2-jährige CHRONEXT Garantie ab Kaufdatum.']

Моя цель - получить словарь пар ключ / значение.Например, «состояние» = «хорошо».Первый блок был без проблем, затем я подумал, что давайте раздельно получим второй блок и расширим список.

Ключ не проблема, но значение, которое я пытаюсь получить, возвращает те 3-4 пустых элемента, которыеЯ приведу порядок в синхронизацию, как только я соберу ключ / значение позже.Удаление 3 пустых полей может быть не лучшим вариантом, так как другая страница на этом сайте может немного отличаться.

Как получить только один элемент на ключ-значение?

1 Ответ

0 голосов
/ 11 декабря 2018

Вы хотите извлечь эти спецификации?

Это 100% рабочий код, который извлекает пары ключ-значение из таблицы спецификаций

specs = {}
for td in response.css(".specifications .col.s12.l5")[0].css("tr"):
    specs[td.css("td")[0].css("::text").extract_first()] = td.css("td")[1].css("::text").extract_first()

{u'Uhr f\xfcr': u'Damen', u'Glas': u'Saphirglas', u'Artikel\xadnummer': u'C79467', u'Gr\xf6\xdfe (Geh\xe4use)': u'29\xa0mm', u'Material (Geh\xe4use)': u'Edelstahl', u'Werk': u'Quarz', u'Armband': u'Kautschuk', u'Referenz': u'W7234812.A785.249S.A12D.4'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...