蜘蛛在实现构造函数时崩溃



我正在使用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控制台输入scrapy crawl temp,它没有输出任何内容并且没有响应。日志的错误输出:

2015-05-19 15:28:02+1000 [-] ERROR:
2015-05-19 15:28:02+1000 [-] ERROR:
2015-05-19 15:28:02+1000 [-] ERROR:
2015-05-19 15:28:02+1000 [-] ERROR:
…继续永远

关键问题是log.start()调用,Scrapy开始自己登录(如果LOG_ENABLED是默认的True),除非您手动启动Crawler进程,否则不需要手动启动它。相反,只需在settings.py中设置LOG_FILE设置,或者通过命令行:

scrapy crawl myspider -s LOG_FILE=scrapy.log

最新更新