Как мне записывать элементы из файла Items в csv, а затем добавлять файл csv при каждом последующем запуске программы

#scrapy

#scrapy

Вопрос:

Я хочу создать csv-файл, заполнить его элементами из файла Items и добавлять в csv-файл новые данные каждый раз, когда я впоследствии запускаю программу. Моя цель — использовать cron для запуска его через определенные промежутки времени после его настройки.

 import scrapy
import json
from ..items import AnotherddItem
import datetime
import csv

class AnotherddSpider(scrapy.Spider):
    name = 'ddgrab'
    allowed_domains = ['example.com']
    start_urls = ['https://www.example.com/all?source=private']

    csv_columns=['timestamp','sellerId','sellerName','adUrl']
    dict_data = [timestamp, sellerId, sellerName, adUrl]
    csv_file = 'test.csv'
    with open(csv_file, 'w') as csvfile:
        writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
        writer.writeheader()
        for data in dict_data:
            writer.writerow(data)
  

dict_data содержит все поля в моем items.py файл. Я знаю, что то, что я сделал здесь, неправильно, потому что поля dict_data еще не были определены, но я не знаю, как получить к ним доступ.

Комментарии:

1. Возможно, это стоит того, чтобы открыть запрос функции выше по потоку.

2. Спасибо Gallaecio, я подключил все к базе данных sqlite, и теперь все работает хорошо. У меня есть еще одна проблема, хотя я не уверен, что делать дальше. Точнее, как это сделать. Я хочу очистить те же URL-адреса, но я хочу очистить их через час, 24 часа спустя, 48 часов спустя и т.д. Я могу использовать временную метку, чтобы сделать все это, но мне интересно, могу ли я передать это через те же конвейеры и в ту же базу данных с новыми столбцами, представляющими новые данные. В данный момент она запущена на crontab, которая запускается каждую минуту, и я хотел бы иметь возможность удалять их снова.

3. Извините, но это мой первый проект с использованием python, scrapy, поэтому я нахожусь на крутой кривой обучения и во многих вещах я не уверен.

Ответ №1:

Если вы действительно хотите добавить данные в свой файл, вам нужно создать пользовательский конвейер, который проверит, существует ли уже выходной файл, и при необходимости запишет строку заголовка.