Saya memiliki laba-laba yang akan berjalan sesuai jadwal. Masukan laba-laba didasarkan pada Tanggal. Dari tanggal pengikisan terakhir hingga tanggal hari ini. Jadi pertanyaannya adalah bagaimana cara menyimpan tanggal pengikisan terakhir dalam proyek Scrapy? Ada opsi untuk mendapatkan data dari pengaturan scrapy menggunakan modul pkjutil, tetapi saya tidak menemukan referensi apa pun di dokumen tentang cara menulis data dalam file itu. Ada ide? Mungkin alternatif? P.S. Pilihan saya yang lain adalah menggunakan beberapa DB MySql jarak jauh gratis hanya untuk ini. Tetapi sepertinya lebih banyak pekerjaan jika solusi sederhana tersedia.

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)

Solusi di atas berfungsi dengan baik ketika dijalankan secara lokal. Tetapi saya tidak mendapatkan file atau direktori seperti itu saat menjalankan kode di 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'
0
Billy Jhon 25 November 2017, 19:17

1 menjawab

Jawaban Terbaik

Masalah telah diperbaiki dengan penggunaan Koleksi Scrapinghub

Dan scrapinghub API. Bekerja bagus sekarang. Berikut adalah contoh kode jika seseorang akan merasa berguna.

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']
0
Billy Jhon 26 November 2017, 14:48