NameError: имя не определено Scrapy - PullRequest
0 голосов
/ 04 декабря 2018

Я работаю над веб-сканером, использующим scrapy 1.5, и получаю сообщение об ошибке, что row_list не определен, когда он есть.Я считаю, что это глобальная проблема, но я не уверен, что будет правильным способом исправить это.Причина, по которой я держу код таким образом, заключается в том, что мне нужны подсписки со всеми деталями подряд.Таким образом, я могу использовать первый элемент в списке в качестве ключа и объединить все остальное после первого элемента в 1 элемент, хранящийся во второй позиции.Я должен дать словарь, и мне нужно в этом формате.любая помощь будет отличной.

def forklift_detail_parse(self, response):
    final_dict = {}
    # get the table with html tr and td
    table_list = response.css('div.block-wrapp.full-title.product-info > span > div > table > tr').extract()

    for rows in table_list:
        row_list = Selector(text=rows).css(
            'td::text, td > span::text, #pc-price > span:nth-child(1)::text, tr > td > div::text').extract()
        if len(row_list) <= 1:
            del row_list
        if len(row_list[1:]) > 1:
            row_list[1] = ''.join(row_list[1:])
            del row_list[2:]

        final_dict.update(row_list)




line 5 NameError: name 'row_list' is not defined

1 Ответ

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

Похоже, проблема в том, что вы звоните del row_list, и после этого вы пытаетесь обновить final_dict с этим именем.

Проверьте этот пример:

>>> x = 1
>>> x
1
>>> del x
>>> x
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-8-6fcf9dfbd479> in <module>
----> 1 x

NameError: name 'x' is not defined

Когда вы звоните del row_list, имя row_list будет удалено из пространства имен, поэтому вы не сможете получить к нему доступ.

Подробнее об операторе del: https://docs.python.org/3/reference/simple_stmts.html#del

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