事情就是这样。
这是一个很大的单词列表。我想根据这些话爬取一些数据。这很耗时,所以我想把它分成几部分。
首先,我将一个单词列表加载到__init__
我的蜘蛛列表中。
def __init__(self, category=None, *args, **kwargs):
super(GlosbeSpider, self).__init__(*args, **kwargs)
list_file = open('glosbe/vi/word4/word_list_4', 'r')
for lines in list_file:
lines = lines.strip()
self.word_list.append(lines)
list_file.close()
print 'INIT!!!!!'
然后我在中创建一些初始请求start_requests()
:
def start_requests(self):
container = []
for word in self.word_list:
url = "https://glosbe.com/gapi/tm?from=zh&dest=%s&format=json&phrase=%s&page=%d&pretty=true" % (
self.language, word, 1)
meta_info = {'page_num': 1, 'word': word}
new_req = scrapy.Request(url, callback=self.parse_json, meta=meta_info, dont_filter=True,
errback=self.process_error)
container.append(new_req)
print 'START_REQUESTS!!!!!'
return container
并且我解析了里面的项目parse_json()
(这里省略了代码,不重要)。
根据官方文档,如果我在 shell 中两次使用相同的命令,例如:
scrapy crawl MySpider -s JOBDIR=dir_I_want_to_use
然后爬虫将从它停止的地方继续它的工作。
但是,当我使用上面相同的命令恢复工作时,仍然有
INIT!!!!!
START_REQUESTS!!!!!
屏幕上。为什么?我认为它应该继续其解析过程而不调用start_requests()
.
如果我想从我停止的地方继续我的爬行工作,我该如何处理?谢谢。