1

事情就是这样。
这是一个很大的单词列表。我想根据这些话爬取一些数据。这很耗时,所以我想把它分成几部分。

首先,我将一个单词列表加载到__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().
如果我想从我停止的地方继续我的爬行工作,我该如何处理?谢谢。

4

0 回答 0