Как увеличить счетчик в пауке, если условие в конвейерах - True? [SCRAPY-ПИТОН] - PullRequest
0 голосов
/ 22 апреля 2020

Я очищаю элементы и использую почтовые индексы (cp) в URL-адресах

def parse(self, response):
    liste = ['09', '81']
    for counter in range(len(liste)):
        cp = liste[counter]
        for i in range(0, 2):
            user_agent = random.choices(user_agent_list)
            headers = {

                'User-Agent': str(user_agent),
                "Connection": "close",
            }

         next_pagination_link ='https://www.seloger.com/list.htm?projects=2&types=1,2&places=[{cp:' + 
                               str(cp) + '}]&sort=d_dt_crea&enterprise=0&qsVersion=1.0&LISTING- 
                               LISTpg=' + str(i) + ''

В файле pipilines.py я использую этот сценарий в методе process_item для удаления существующих элементов в sql база данных:

    if record is None:
        print('storing item')
        self.store_db(item)
        return True
    elif record is not None:
        raise DropItem("Item already exists: %s" % item['lien_du_bien'])

То, что я хочу сделать, это: если предмет отброшен, я хочу увеличить счетчик переменных в пауке на 1, чтобы перейти к другому почтовому индексу.

Есть ли способ сделать это?

1 Ответ

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

Внутри def process_item(self, item, spider) вашего конвейера, вы можете spider.YOUR_SPIDER_VARIABLE получить доступ к любой переменной вашего Паука

def process_item(self, item, spider):
    if record is None:
        print('storing item')
        self.store_db(item)
        return True
    elif record is not None:
        spider.VARIABLE_TO_INCREMENT
        raise DropItem("Item already exists: %s" % item['lien_du_bien'])
...