我正在使用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