Могу ли я динамически создавать ключи для dict в python? - PullRequest
0 голосов
/ 27 апреля 2020

Я создаю паука в Scrapy. И я хочу очистить таблицу следующим образом:

  • Взять каждые <tr>
  • Использовать <th> в качестве ключа и <td> в качестве содержимого

Код, который я придумал, такой:

def parse(self, response):
        item = {}
        item['code'] = response.xpath('//meta[@itemprop="sku"]/@content').extract_first()
        tables = response.css('.technical-specs')
        for table in tables:
            specs = tables.xpath('tbody/tr')
            for s in specs:
                key = s.xpath('th/text()').extract_first().replace(" ", "_").replace("(", "_").replace(")", "_").replace("/", "").lower()
                value = s.xpath('td/text()').extract_first()
                item[key] = value


        return item

Но он не работает. Это возможно для достижения?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Обновленный код функции синтаксического анализа обновлен в деталях моего вопроса. Проблема была не в способе l oop или словаре, а в том, как я извлек данные. Я использовал .extract () , что делает ответ Unicode и «неразборчивым». Исправлено удаление .extract.

0 голосов
/ 27 апреля 2020

Вам нужно создать экземпляр dict, а затем добавить предметы внутри l oop. Например:


my_dict = dict() # Can be {} to

for item in items:
  key = item.key
  value = item.value
  my_dict[key] = value

Regards
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...