【发布时间】:2017-04-09 09:47:53
【问题描述】:
我编写了一个全功能蜘蛛的代码,它接受一个参数date。这将在蜘蛛的每次迭代中发生变化。
为了测试目的,我创建了一个执行以下操作的 shell 脚本。
- 有一个点文件
.date,格式为YYYY-MM-DD,脚本读取文件并将日期传递给蜘蛛。 - 一旦任务完成并将数据保存到 mysql,日期值会减少一天,并将其保存在文件中以供下一次迭代。
Shell 脚本
lastDate=$(cat .dailyScrapeDate)
echo "Last scraped Date : $lastDate"
nextDate=$(date -d "$lastDate -1 day" "+%Y-%m-%d")
echo "Next scraped Date : $nextDate"
echo "Launching Spider"
scrapy crawl dailyDataSpider -a date=$nextDate
echo "Writing scraped date ($nextDate) to dot file .dailyScrapeDate"
echo "$nextDate" > .dailyScrapeDate
现在我需要将其移至爬虫进程。那么我该如何进行呢?我需要创建一个独立的 python 文件并运行它吗?例如我创建了一个文件process.py
Python 脚本 process.py
>from DailyDataSpider import DailyDataSpider
from scrapy.crawler import CrawlerProcess
process = CrawlerProcess()
process.crawl( DailyDataSpider, date=date ) # TODO: Read and pass date
process.start()
# Save date?
参数 date=date 已通过,但我对如何在此之后继续前进感到有些困惑。我是否在 python 文件上读取和写入点文件?这个文件代码是在每次迭代时运行还是废弃只接受一次参数并使用它运行?
问题:如何递归运行带有动态(变量)参数的蜘蛛?
【问题讨论】:
标签: python scrapy web-crawler twisted scrapy-spider