为了账号安全,请及时绑定邮箱和手机立即绑定

scrapy-使用正确的扩展名下载

scrapy-使用正确的扩展名下载

鸿蒙传说 2021-04-01 14:15:46
我有以下蜘蛛:class Downloader(scrapy.Spider):    name = "sor_spider"    download_folder = FOLDER    def get_links(self):        df = pd.read_excel(LIST)        return df["Value"].loc    def start_requests(self):        urls = self.get_links()        for url in urls.iteritems():            index = {"index" : url[0]}            yield scrapy.Request(url=url[1], callback=self.download_file, errback=self.errback_httpbin, meta=index, dont_filter=True)    def download_file(self, response):        url = response.url        index = response.meta["index"]        content_type = response.headers['Content-Type']        download_path = os.path.join(self.download_folder, r"{}".format(str(index)))        with open(download_path, "wb") as f:            f.write(response.body)        yield LinkCheckerItem(index=response.meta["index"], url=url, code="downloaded")    def errback_httpbin(self, failure):        yield LinkCheckerItem(index=failure.request.meta["index"], url=failure.request.url, code="error")这应该:阅读具有链接的excel(LIST)转到每个链接并将文件下载到 FOLDER登录结果LinkCheckerItem(我正在将其导出到csv)那通常可以正常工作,但是我的列表包含不同类型的文件-zip,pdf,doc等。这些是我的链接的示例LIST:https://disclosure.1prime.ru/Portal/GetDocument.aspx?emId=7805019624&docId=2c5fb68702294531afd03041e877ca84http://www.e-disclosure.ru/portal/FileLoad.ashx?Fileid=1173293http://www.e-disclosure.ru/portal/FileLoad.ashx?Fileid=1263289https://disclosure.1prime.ru/Portal/GetDocument.aspx?emId=7805019624&docId=eb9f06d2b837401eba9c66c8bf5be813http://e-disclosure.ru/portal/FileLoad.ashx?Fileid=952317http://e-disclosure.ru/portal/FileLoad.ashx?Fileid=1042224https://www.e-disclosure.ru/portal/FileLoad.ashx?Fileid=1160005https://www.e-disclosure.ru/portal/FileLoad.ashx?Fileid=925955https://www.e-disclosure.ru/portal/FileLoad.ashx?Fileid=1166563我希望它以原始扩展名保存文件,无论它是什么...就像我的浏览器在打开警报以保存文件时一样。我试图用来response.headers["Content-type"]找出类型,但在这种情况下,它总是application/octet-stream。我该怎么办?
查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

您需要解析Content-Disposition标头以获取正确的文件名。


查看完整回答
反对 回复 2021-04-27
  • 1 回答
  • 0 关注
  • 223 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号