Паук падает при реализации конструктора

Я использую Scrapy для создания очень простого парсера веб-сайтов.

Если мой подкласс Spider реализует конструктор, и я запускаю его, scrapy переходит в бесконечный цикл и не запускает паука.

Почему это происходит и как я могу это исправить?

class FinderSpiderTemp(Spider):

    name = "temp"
    allowed_domains = ["yellowpages.com.au"]
    start_urls = []

    # if I comment out this function then scrapy console executes happily
    def __init__(self, category=None, *args, **kwargs):
        super(FinderSpiderTemp, self).__init__(*args, **kwargs)
        log.start("log.txt")

        self.start_urls = ["http://www.yellowpages.com.au/search/listings?clue=abc&locationClue=8000&selectedViewMode=list&eventType=sort&sortBy=distance"] )


    def parse(self, response):
       return parse_business_list_page(response)

Я набираю scrapy crawl temp в консоль scrapy, она ничего не выводит и не отвечает. Вывод ошибки из лога:

2015-05-19 15:28:02+1000 [-] ОШИБКА: 2015-05-19 15:28:02+1000 [-] ОШИБКА:
2015-05-19 15:28:02+1000 [ -] ОШИБКА: 2015-05-19 15:28:02+1000 [-] ОШИБКА:
2015-05-19 15:28:02+1000 [-] ОШИБКА: 2015-05-19 15:28: 02+1000 [-] ОШИБКА:
2015-05-19 15:28:02+1000 [-] ОШИБКА: 2015-05-19 15:28:02+1000 [-] ОШИБКА:
.. ... продолжается вечно


person sazr    schedule 19.05.2015    source источник
comment
Почему вы используете конструктор здесь. Я не вижу никаких аргументов, которые вы передаете пауку. Пауки получают аргументы в своих конструкторах. Я бы предложил вам использовать конструктор, если вы передаете аргументы   -  person backtrack    schedule 19.05.2015


Ответы (1)


Основная проблема заключается в том, что при вызове log.start() Scrapy начинает ведение журнала самостоятельно (если LOG_ENABLED равно True, что по умолчанию), нет необходимости запускать его вручную, если только вы не также запустите процесс Crawler вручную. Вместо этого просто установите параметр LOG_FILE в settings.py или через командную строку:

scrapy crawl myspider -s LOG_FILE=scrapy.log
person alecxe    schedule 19.05.2015