python - 如何将参数(对于 FEED_URI)传递给 Scrapy 蜘蛛的实例以动态命名输出文件

标签 python scrapy

我想向蜘蛛发送参数并获取根据参数命名的输出(json、csv)。
F.e,
$ scrapycrawlspider_name-acategory=category1-asubcategory=subcategory1

我想得到:
category1_subcategory1.json(或csv,没关系)。
我的意思是我需要确切的 json 名称作为蜘蛛的参数。

class MySpider(scrapy.Spider):

name = 'my_spider'
# how can I get to this place ?
customs_settings = {
  'FEED_URI' : 'some_name.json'
 }
def __init__(self, category, subcategory, *args, **kwargs):

    super(MySpider, self).__init__(*args, **kwargs)

    self.category = category
    self.subcategory = subcategory

最佳答案

您可以从 __init__kwargs 获取这些参数,并在 FEED_URI 中使用,如下所示:

class MySpider(scrapy.Spider):
    name = 'my_spider'

    custom_settings = {
      'FEED_URI' : '%(category)s_%(subcategory)s.json'
     }

    def __init__(self, *args, **kwargs):
        self.category = kwargs.pop('category', '')
        self.subcategory = kwargs.pop('subcategory', '')
        super(MySpider, self).__init__(*args, **kwargs)
        

文档:https://doc.scrapy.org/en/latest/topics/feed-exports.html#storage-uri-parameters

关于python - 如何将参数(对于 FEED_URI)传递给 Scrapy 蜘蛛的实例以动态命名输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41871605/

相关文章:

python - 将图像中的对象排成一行

python - 提交使用 Scrapy 动态呈现的表单?

Python Scrapy 打印 start_url 或 start_url 中的变量

python - 写入 csv 文件 scrapy

scrapy - 不抓取数据库中保存的网址

Python 3.x : urllib. 请求错误

树莓派中通过 wifi 的 Python 套接字

java - 如何在 Heroku 中将 Stanford NLP 工具与 NLTK 一起使用?

python - 从列表中返回随机子子列表及其索引

javascript - 尝试在网站上抓取由谷歌地图API生成的动态数据,但正常抓取返回空白