Ich habe es mit File Pipeline versucht, aber es funktioniert einfach nicht. Die URL auf Seite A sieht wie folgt aus: http:...php?id=1234, daher gibt die integrierte Funktion file_path() einen Fehler zurück. Das Überschreiben von file_path() stoppt einfach die Pipeline-Funktion ohne Debug-Ausgabe.
Also habe ich diesen Beitrag gefunden:
Antwort, auf die ich verwiesen habe
Nachdem ich mich beworben habe, habe ich festgestellt, dass die Parsing-Funktion die Daten, die ich in Meta übergeben habe, nicht ändert. Mein Code ist wie folgt:
Code: Select all
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 [debug] INFO: ParseClientCaseNote: Nach dem Aufruf von DownClientCaseNoteAttach lautet testmeta: Dies dient zum Testen von Metaargu
2018-09-29 09:26:17 [debug] INFO: DownClientCaseNoteAttach: Test-Meta
2018-09-29 09:26:17 [debug] INFO: Dies dient zum Testen von Meta-Argu
Es scheint, dass die Parsing-Funktion verzögert ist. Wie erhalte ich das korrekte Ergebnis?
Mobile version