Как запустить Scrapy Spider с помощью cron Job Scheduling - PullRequest
0 голосов
/ 30 мая 2019

Я новичок в Python и в Интернете. Прошу прощения за мое невежество. В этой программе я хочу запустить своего паука по расписанию. Я использую Python 3.7 и MacOs. Я написал cronjob, используя crontab, и вызвал скрипт для запуска scrapy spider. Однако он выполняется только один раз с последней строкой «ИНФО: Закрывающий паук (готово)». Не повторять по расписанию. Я выполнил простой скрипт на python, чтобы проверить расписание, и затем он заработал. Кажется, эта проблема только с пауком. Пожалуйста, помогите понять, как это исправить. Любая помощь будет оценена. Спасибо

import csv
import os
import random
from time import sleep
import scrapy


class spider1(scrapy.Spider):
    name = "amspider"

    with open("data.csv", "a") as filee:
        if os.stat("data.csv").st_size != 0:
            filee.truncate(0)
        filee.close()

    def start_requests(self):
        list = ["https://www.example.com/item1",
                "https://www.example.com/item2",
                "https://www.example.com/item3",
                "https://www.example.com/item4",
                "https://www.example.com/item5"
                ]

        for i in list:
            yield scrapy.Request(i, callback=self.parse)
            sleep(random.randint(0, 5))

    def parse(self, response):
        product_name = response.css('#pd-h1-cartridge::text')[0].extract()
        product_price = response.css(
            '.product-price .is-current, .product-price_total .is-current, .product-price_total ins, .product-price ins').css(
            '::text')[3].extract()

        print(product_name)
        print(product_price)

        with open('data.csv', 'a') as file:
            itemwriter = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)

            itemwriter.writerow([str(product_name).strip(), str(product_price).strip()])

            file.close()

amsp.sh

#!/bin/sh
cd /Users/amal/PycharmProjects/AmProj2/amazonspider 
PATH=$PATH:/usr/local/bin/
export PATH
scrapy crawl amspider

кронтаб

Пробовал в обе стороны Но паук казнил только один раз.

*/2 * * * * /Users/amal/Documents/amsp.sh

*/2 * * * * cd /Users/amal/PycharmProjects/AmProj2/amazonspider && scrapy crawl amspider
...