Scrapy配置FEEDS失败:如何将JSON文件上传至Wasabi S3存储桶?
Scrapy爬虫结果无法上传至Wasabi S3存储桶的解决方法
以下是针对你的问题的排查和解决步骤:
- 修正FEEDS的URL协议格式
Scrapy的S3 Feed导出器默认识别s3://协议地址,而非HTTPS URL。将FEEDS中的目标路径改为:
FEEDS = { "s3://bucketname/%(name)s/%(name)s_%(time)s.json": { "format": "json", } }
- 指定Wasabi的S3端点URL
Wasabi属于S3兼容存储,需要手动配置端点地址才能让Scrapy正确连接。在settings.py中添加:
AWS_ENDPOINT_URL = 'https://s3.ap-southeast-2.wasabisys.com'
- 确认依赖包版本
Scrapy的S3导出功能依赖boto3而非旧版boto,执行以下命令安装或更新:
pip install boto3
- 修正配置变量大小写
Scrapy的配置变量区分大小写,将密钥配置改为大写:
AWS_ACCESS_KEY_ID = "MY_ACCESS_KEY" AWS_SECRET_ACCESS_KEY = "MY_SECRET_KEY"
- 验证密钥与权限有效性
编写简单脚本测试密钥是否能正常操作Wasabi存储桶,排除权限或密钥错误:
import boto3 s3_client = boto3.client( 's3', aws_access_key_id='MY_ACCESS_KEY', aws_secret_access_key='MY_SECRET_KEY', endpoint_url='https://s3.ap-southeast-2.wasabisys.com' ) # 测试上传小文件 with open('test_upload.txt', 'w') as f: f.write('test content') s3_client.upload_file('test_upload.txt', 'bucketname', 'test_upload.txt')
如果脚本能成功上传,说明权限和密钥无问题,问题集中在Scrapy配置;若失败,检查密钥有效性或存储桶权限策略。
内容的提问来源于stack exchange,提问作者X-something
相关产品推荐
相关产品推荐

