Python de rendement et de retour des déclarations? et Scrapy Céder la demande
Quelle est la différence entre yield
et return
expliquer avec un exemple?
et ce qui se passe réellement lorsque le générateur de nous yield
une valeur ou d'une demande?
Je ne suis pas à l'appel de mon générateur de toute autre fonction ou d'un programme.
Ma boucle est:
for index in range(3):
yield Request(url,callback=parse)
C'est en faisant des demandes sur l'url spécifique et d'appeler la fonction de rappel après la demande. Ce que ce code est en train de faire?
Et qu'est-ce que la séquence suivie par le code?
double possible de Le Python mot clé yield expliqué
non, mais sa plus en détail et associé à un certain exammple pour SCRAPY Objet de Demande.
Avez-vous lu la question liée à l'?
non, mais sa plus en détail et associé à un certain exammple pour SCRAPY Objet de Demande.
Avez-vous lu la question liée à l'?
OriginalL'auteur A.J. | 2012-01-08
Vous devez vous connecter pour publier un commentaire.
Le seul aspect de votre question qui n'est pas répondu à la question liée à par @Jochen est "je n'appelle pas mon générateur de toute autre fonction ou d'un programme.".
Vous définissez votre robot de classe, et scrapy appelle la (spécial) fonctions que vous définissez, comme indiqué dans la documentation. (Par exemple la
parse
fonction est la valeur par défaut de rappel pour les demandes qui ne spécifiez pas de rappel).OriginalL'auteur Acorn
Je suppose que vous êtes confronté à l'énigme de la fonction
start_requests()
avec le contexteyield
.Par exemple:
Lorsque vous reporter au document de scrapy spider et ensuite trouver la fonction nommée
start_requests()
,il dit que la méthode doit retourner un objet iterable. Si vous modifiez le rendement de retour, il n'est pas un objet iterable parce que la boucle for est déjà plus lorsque vous démarrez votre spider.Il pourrait être un gâchis.Il est naturel que votre araignée devrait envoyer des requêtes http vers ces destinations, un par un, de sorte que le meilleur moyen est d'un générateur. Dans la boucle for, votre araignée s'arrête à
yield
et retourscrapy.Request()
, avec toutes les choses, votre araignée sesend()
de générateur et de passer à la prochaineurl suivantes dans la liste.
OriginalL'auteur hcnhcn012