我有兴趣通过添加自定义ResponseType在我的项目中扩展Scrapy。现在,我想添加一个PDF类型,该类型将使用PDFMiner返回纯文本和文档结构(包括链接)。我以后可能要添加其他文档类型。
从哑剧类型到响应类的映射似乎发生在scrapy.responsetypes中,尤其是CLASSES
中的ResponseTypes
字典。但是,尚不清楚是否/如何将其与自定义响应类一起覆盖。该文件末尾的responsetypes
变量在其他一些地方直接引用,在Scrapy项目设置中我看不到对该类的任何引用。此外,我在Scrapy文档中找不到有关如何执行此操作的任何信息。
我当然可以分叉Scrapy并使用定义了自定义类的我自己的版本,但这会带来维护上的麻烦。
在Scrapy中定义自定义响应类型的最佳方法是什么?
答案 0 :(得分:1)
没有简单的方法可以做到这一点。 Scrapy希望您对它的默认响应类型感到满意。
您可以替换使用此类的下载处理程序和中间件,但这可能会太多工作...
获得相似结果的最简单方法可能是添加一个额外的下载中间件,该中间件将:
Content-Type
标头这确实做了额外的工作(在完成正常处理后创建了一个额外的响应对象),但是它比替代方法要容易得多。