Как передать класс в scrapy spider

'''

class MainSpider(scrapy.Spider):
    name = "main"

    def add_progress(self, value):
        value = float(self.progress.text.replace('%', '')) + value
        self.progress.text = f'{value}%'

    def start_requests(self, **kwargs):
        self.query = ast.literal_eval(self.query)
        self.pages = int(self.pages)
        self.rules = ast.literal_eval(self.rules)
        print(self.a.value)

        q = self.query['start']

        for page in range(self.pages):
            url = f'{self.url}/{self.query["name"]}{q}'
            q += self.query['step']
            yield scrapy.Request(url, callback=self.parse)

    def parse(self, response, **kwargs):
        soup = BeautifulSoup(response.text, 'html.parser')
        self.add_progress(round(100 / self.pages, 1))

        if self.rules['parse_mode'] == 'manual':
            for proxy in get_proxies_by_rules(soup, self.rules, self.url):
                print(proxy)

        elif self.rules['parse_mode'] == 'automatic':
            for proxy in get_ip_port_from_text(soup.text):
                print(proxy)


def run_spider(url, query, rules, pages, progress):
    class A:
        value = '123'

    a = A()
    temp_dir = os.getcwd()

    os.chdir('/home/black/Projects/web_parsers/ip_parser/logic/parsers/medium_parser/medium_parser/spiders/')

    command = f'scrapy crawl main -a url="{url}" -a query="{query}" -a rules="{rules}" ' \
              f'-a pages={pages} -a progress="{a}"'
    os.system(command)

    os.chdir(temp_dir)

'''

Допустим, я хочу передать класс А в MainSpider. Как мне это сделать. Через CrawlerProcess не подойдет, мне нужно чтоб код запускался паралельно основному сценарию. При запуске данного кода я получаю ошибку AttributeError: 'MainSpider' object has no attribute 'a'


Ответы (0 шт):