def parse(self,response):
print("parse!!!!!!!!!!!!!!!!!!!")
yield scrapy.Request("http://xx.com", callback=self.parseHeader,meta={'item': item})
yield scrapy.Request("http://xx.com ", callback=self.parseBody,meta={'item': item})
yield scrapy.Request("http://xx.com ", callback=self.parseFooter,meta={'item': item})
def parseHeader(self,response):
print("parseHeader!!!!!!!!!!!!!!!!!!!")
item = ItemHeader()
#...
yield item
def parseBody(self,response):
print("parseBody!!!!!!!!!!!!!!!!!!!")
item = ItemBody()
#...
yield item
def parseFooter(self,response):
print("parseFooter!!!!!!!!!!!!!!!!!!!")
item = ItemFooter()
#...
yield item
L'exécution du code ci-dessus entraîne le résultat suivant. résultats actuelsComment exécuter plusieurs méthodes dans scrapy
parse!!!!!!!!!!!!!!!!!!!
↓
parseHeader!!!!!!!!!!!!!!!!!!!
↓
pipeline
↓
Closing spider (finished)
La seule méthode de « parseHeader » seront exécutés Sous ce n'est pas exécuté Modification de rendement pour revenir ne change pas le résultat.
Je voudrais changer le résultat ci-dessus comme suit.
parse!!!!!!!!!!!!!!!!!!!
↓
parseHeader!!!!!!!!!!!!!!!!!!!
↓
pipeline
↓
parseBody!!!!!!!!!!!!!!!!!!!
↓
pipeline
↓
parseFooter!!!!!!!!!!!!!!!!!!!
↓
pipeline
↓
Closing spider (finished)
Comment est-ce que je pourrais faire cela? S'il vous plaît laissez-moi savoir si vous savez quelque chose qui devient un indice?
Nous vous remercions de votre commentaire. Bien qu'il n'y ait pas assez d'explications, il y a une instruction for dans parse_body Comme vous l'avez montré, l'exécution du pipeline n'était que le début de l'instruction. – sukho
Pour déclaration? Pouvez-vous poster cela? Je suggère de revoir [aperçu architectural] (https://doc.scrapy.org/fr/latest/topics/architecture.html) de scrapy si vous essayez de comprendre quand et où les pipelines sont en cours d'exécution. – Granitosaurus