Scrapy 未在 Cron Job 中运行

问题描述 投票:0回答:1

我正在尝试使用 cron 选项卡安排一个 python 脚本,该脚本应在 MacOS 上每天上午 9 点运行。

以下是我在 crontab 中使用的命令 -

0 9 * * * /Library/Frameworks/Python.framework/Versions/3.11/bin/python3 /Users/abhishekshukla/Desktop/python_scripts/tool/automation_test.py >> ~/cron.log 2>&1

我正在使用名为 - advertools 的 python 包,它基于 scrapy。

但是 cron 作业没有运行并抛出错误 -

FileNotFoundError:[Errno 2]没有这样的文件或目录:'scrapy'

下面是我的Python脚本-

import pandas as pd
import advertools as adv

df = pd.read_csv(r'~/Desktop/python_scripts/tool/test_urls.csv',encoding='utf-8')

url_list = df['url'].values.tolist()

print(url_list)

adv.crawl(url_list, 'cron_test_output.jl', follow_links=False)

crawl_df = pd.read_json('cron_test_output.jl')

print(crawl_df)

crawl_df.to_csv(r'~/Desktop/python_scripts/tool/cron_output.csv')

我尝试更改 python 的路径并在虚拟环境中运行相同的命令。但它抛出了同样的错误。

cron scrapy
1个回答
0
投票

找到解决方案。

四件事-

  1. 确保您正在导入 scrapy 和 CrawlerProcess 所以包括以下几行 -

导入scrapy 从 scrapy.crawler 导入 CrawlerProcess

  1. 您必须在 crontab 文件中提及二进制文件的路径。因此,请在顶部提及以下行 -

PATH=/Library/Frameworks/Python.framework/Versions/3.11/bin (可能对你来说不同)

  1. 确保在 python 脚本中添加以下代码 -

MySpider 类(scrapy.Spider): 您的抓取代码

  1. 如果您使用 adverttools,您无法控制它保存 output.jl 文件的位置。所以位置将默认为 - /Users/username/output.jl
© www.soinside.com 2019 - 2024. All rights reserved.