我有一个会按计划运行的蜘蛛。蜘蛛输入基于日期。从上次刮擦的日期到今天的日期。那么问题是如何在 Scrapy 项目中保存最后一次抓取的日期?有一个选项可以使用 pkjutil 模块从 scrapy 设置中获取数据,但我在文档中没有找到关于如何在该文件中写入数据的任何参考。任何想法?也许是另一种选择?PS我的另一个选择是为此使用一些免费的远程MySql DB。但如果有简单的解决方案,看起来工作量更大。
import pkgutil
class CodeSpider(scrapy.Spider):
name = "code"
allowed_domains = ["google.com.au"]
def start_requests(self):
f = pkgutil.get_data("au_go", "res/state.json")
ids = json.loads(f)
id = ids[0]['state']
yield {'state':id}
ids[0]['state'] = 'New State'
with open('./au_go/res/state.json', 'w') as f:
json.dump(ids, f)
上述解决方案在本地运行时工作正常。但是在 Scrapinghub 运行代码时,我没有得到这样的文件或目录。
File "/tmp/unpacked-eggs/__main__.egg/au_go/spiders/test_state.py", line 33, in parse
with open(savePath, 'w') as f:
IOError: [Errno 2] No such file or directory: './au_go/res/state.json'