Python Scrapy如何使用动态(变量)参数递归运行spider?
我有一个完整的函数spider,它接受一个参数Python Scrapy如何使用动态(变量)参数递归运行spider?,python,scrapy,web-crawler,twisted,scrapy-spider,Python,Scrapy,Web Crawler,Twisted,Scrapy Spider,我有一个完整的函数spider,它接受一个参数date。在spider的每次迭代中都会发生变化 为了测试purpouse,我创建了一个shell脚本,它执行以下操作 有一个点文件.date,其格式为YYYY-MM-DD脚本读取该文件并将日期传递给spider 一旦任务完成并将数据保存到mysql,日期值将减少一天,并将其保存到文件中以供下一次迭代使用 Shell脚本 现在我需要将其移动到爬虫进程。那我该怎么做呢?我是否需要创建一个独立的python文件并运行它?例如,我创建了一个文件proces
date
。在spider的每次迭代中都会发生变化
为了测试purpouse,我创建了一个shell脚本,它执行以下操作
.date
,其格式为YYYY-MM-DD
脚本读取该文件并将日期传递给spiderprocess.py
Python脚本process.py
参数date=date已经过了,但是我有点不明白在这之后如何继续。我是否在python文件上读写点文件?此文件代码是否在每次迭代或报废时运行,只接受一次参数并与之一起运行
问题:如何使用动态(变量)参数递归运行spider?此脚本正常
from DailyDataSpider import DailyDataSpider
from scrapy.crawler import CrawlerProcess
process = CrawlerProcess()
process.crawl( DailyDataSpider, date=date ) # TODO: Read and pass date
process.start()
现在在您的蜘蛛文件中执行此操作
from scrapy.spiders import CrawlSpider
class DailyDataSpider (CrawlSpider):
def __init__(self, date=None):
if date:
self.date = date
现在访问spider中的任何位置。
您可以访问管道中的日期
或中间件
,如spider.date
init()中提供了默认无,以防止在不希望传递日期参数时出错。。。所以scrapy crawl spider1-a date=date\u这里和scrapy crawl spider1
会起作用这个脚本没问题
from DailyDataSpider import DailyDataSpider
from scrapy.crawler import CrawlerProcess
process = CrawlerProcess()
process.crawl( DailyDataSpider, date=date ) # TODO: Read and pass date
process.start()
现在在您的蜘蛛文件中执行此操作
from scrapy.spiders import CrawlSpider
class DailyDataSpider (CrawlSpider):
def __init__(self, date=None):
if date:
self.date = date
现在访问spider中的任何位置。
您可以访问管道中的日期
或中间件
,如spider.date
init()中提供了默认无,以防止在不希望传递日期参数时出错。。。所以scrapy crawl spider1-a date=date\u在这里和scrapy crawl spider1
可以工作可能应该始终指定self.date
。我不确定为什么这里提供了默认值None
,但是如果它有用,那么让下游应用程序代码检查它-而不是在未设置时点击AttributeError。@Jean-PaulCalderone默认值None在uuu init_uu()中提供,以防止在我们不想传递日期参数时出错。。。因此scrapy crawl spider1-这里的日期=日期
和scrapy crawl spider1
可以工作如果应用程序代码需要一个日期来运行,那么进程在scrapy crawl…
时间失败比以后在爬网过程中的某个随机点失败要好得多。但是,当然,保留默认值,只需无条件地创建属性。可能应该始终指定self.date
。我不确定为什么这里提供了默认值None
,但是如果它有用,那么让下游应用程序代码检查它-而不是在未设置时点击AttributeError。@Jean-PaulCalderone默认值None在uuu init_uu()中提供,以防止在我们不想传递日期参数时出错。。。因此scrapy crawl spider1-这里的日期=日期
和scrapy crawl spider1
可以工作如果应用程序代码需要一个日期来运行,那么进程在scrapy crawl…
时间失败比以后在爬网过程中的某个随机点失败要好得多。但是,当然,保留默认值,只需无条件地创建属性即可。