Я пытаюсь проанализировать страницу A, загрузить файлы, перечисленные на этой странице, на локальный диск, заменить URL-адрес на странице A URL-адресом сохраненных файлов и, наконец, сохранить страницу A. на локальный диск.
Iпробовал файл конвейера но он просто не работает.URL на странице A выглядит как http: ... php? Id = 1234, поэтому встроенный file_path () возвращает ошибку.Переопределение file_path () просто останавливает конвейерную работу без каких-либо отладочных выходных данных.
Итак, я нашел этот пост:
Ответ, о котором я говорил
После того, как я применил Iобнаружил, что функция синтаксического анализа не изменит данные, которые я передал в мета.Мой код выглядит так:
def ParseClientCaseNote(self,response):
# The function is to download all attachments and replace URL inside pointing to local files
TestMeta='this is to test meta argu'
for a in AttachmentList:
yield scrapy.Request(a,callback=self.DownClientCaseNoteAttach,meta={'test':TestMeta})
self.logger.info('ParseClientCaseNote: after call DownClientCaseNoteAttach, testmeta is: ' + TestMeta)
return
def DownClientCaseNoteAttach(self,response):
TestArg=response.meta['test']
self.logger.info('DownClientCaseNoteAttach: test meta')
self.logger.info(TestArg)
TestArg='this is revised from DownClientCaseNoteAttach'
with open(AbsPath,'wb') as f:
f.write(response.body)
return
Я получил ниже результат в журнале:
2018-09-29 09:26:13 [отладка] INFO: ParseClientCaseNote: после вызова DownClientCaseNoteAttach, testmeta: это тестирование мета-аргумента 2018-09-29 09:26:17 [debug] INFO: DownClientCaseNoteAttach: тестирование мета 2018-09-29 09:26:17 [debug] INFO: это тестирование мета-аргумента
Кажется, функция анализа отложена.Как правильно получить результат?
Спасибо