如何在Scrapy 2.X版本中将“FEEDS”替换为“FEED_URI &”FEED_FORMAT“?使用Python Tkinter的GUI应用程序

hfyxw5xn  于 2022-11-09  发布在  Python
关注(0)|答案(1)|浏览(116)

我正在学习如何使用Python Tk inter创建Scrapy Desktop应用程序。因此,我正在尝试使用Python Tkinter运行这个预构建的Scrapy Desktop应用程序。在保存输出时,“FEEDS”有问题。下面提到的函数通过选择特定的扩展名并将其保存到特定的位置来保存输出文件。此脚本是基于Scrapy 1.8版开发的。因此,在Scrapy 2.X版本中,**'FEED_URI & 'FEED_FORMAT'**不起作用,因为它们已被替换为“FEEDS”。

def execute_spider():
    if dataset_entry.get() == '' or chosen_feed not in ['CSV', 'JSON']:
        messagebox.showerror('Error', 'All entries are required')
        return
    try:
        feed_uri = f'file:///{folder_path}/{dataset_entry.get()}.{chosen_feed}'
    except:
        messagebox.showerror('Error', 'All entries are required')

    settings = project.get_project_settings()
    settings. Set('FEED_URI', feed_uri)
    settings. Set('FEED_FORMAT', chosen_feed)

    configure_logging()
    runner = CrawlerRunner(settings)
    runner.crawl(chosen_spider)

    reactor.run(installSignalHandlers=False)

要查看完整的脚本,您还可以访问here
那么,我如何使用“FEEDS”来代替这两行代码呢?

settings. Set('FEED_URI', feed_uri)
settings. Set('FEED_FORMAT', chosen_feed)
w1jd8yoj

w1jd8yoj1#

您可以改用

settings.set("FEEDS", {
   feed_uri: {
       'format': chosen_format,
       'encoding': 'utf8'
 }
})

且包括任何其它适当设置。
有关可用选项,请参阅报废文档:进给

相关问题