Scrapy, как сохранить состояние между запусками паука (через scrapinghub)?

У меня есть паук, который будет работать по расписанию. Ввод паука основан на дате. От даты последней очистки до сегодняшней даты. Итак, вопрос в том, как сохранить дату последней очистки в проекте Scrapy? Есть возможность получить данные из настроек scrapy с помощью модуля pkjutil, но я не нашел в документах ссылок на то, как записывать данные в этот файл. Есть идеи? Может альтернатива? P.S. Мой другой вариант - использовать для этого бесплатную удаленную базу данных MySql. Но похоже, что больше работы, если доступно простое решение.

import pkgutil

class CodeSpider(scrapy.Spider):
name = "code"
allowed_domains = ["google.com.au"]

def start_requests(self):
    f = pkgutil.get_data("au_go", "res/state.json")
    ids = json.loads(f)
    id = ids[0]['state']

    yield {'state':id}
    ids[0]['state'] = 'New State'
    with open('./au_go/res/state.json', 'w') as f:
        json.dump(ids, f)

Приведенное выше решение отлично работает при локальном запуске. Но я не получаю такого файла или каталога при запуске кода на Scrapinghub.

File "/tmp/unpacked-eggs/__main__.egg/au_go/spiders/test_state.py", line 33, in parse
    with open(savePath, 'w') as f:
IOError: [Errno 2] No such file or directory: './au_go/res/state.json'

person Billy Jhon    schedule 25.11.2017    source источник
comment
Вы все делаете правильно, просто сохраните в обычный текстовый файл,, вот и все   -  person Umair Ayub    schedule 25.11.2017
comment
@Umair Спасибо. Смотрите обновленный пост.   -  person Billy Jhon    schedule 26.11.2017


Ответы (1)


Проблема устранена с использованием Scrapinghub Collections.

И API парсингхаба. Теперь работает хорошо. Вот пример кода, вдруг кому пригодится.

from scrapinghub import ScrapinghubClient


client = ScrapinghubClient(Your API KEY)
project = client.get_project(Your Project ID)
collections = project.collections

last_accessed = collections.get_store('last_accessed')
last_accessed.set({'_key': 'Date', 'value': '12-54-1235'})
print last_accessed.get('Date')['value']
person Billy Jhon    schedule 26.11.2017