Я новичок в 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