Моя цель - автоматическая загрузка определенного файла Excel с сайта.
У меня есть паук, который находит релевантную ссылку на файл Excel и передает ее по конвейеру.
Функция урожайности у паука
def extracting_function():
#do something
yield scrapy.Request(url=dl_path, callback=self.download_excel)
def download_excel(self, response):
fn = response.url.split('/')[-1]
self.logger.info('Saving EXL %s', fn)
dl_item = DownloadItem(body=response.body, url=response.url)
yield dl_item
Разбор трубопровода:
def process_item(self, item, spider):
dl_url = item['url']
fn = dl_url.split('/')[-1]
self.replace_and_save(item['body'], fn)
return item
def replace_and_save(self, to_save, fn):
o_fn = os.path.join(self.save_path, fn)
##replace
if os.path.exists(o_fn):
old_file = self.get_one_excel_df(o_fn)
new_name = '{0}_{1}'.format(fn, datetime.datetime.today())
with open(new_name, 'wb') as ouf:
pickle.dump(ouf, old_file)
print('Removing old file {0} after creating a backup version of it'.format(o_fn))
os.remove(o_fn)
with open(o_fn, 'wb') as ouf:
ouf.write(to_save)
Файл сохраняется, но это не файл xlsx, который я намеревался, а тело страницы (откуда я удалил ссылку для скачивания).
Что я здесь не так делаю?
Спасибо