IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques tierces Python Discussion :

Scrapy : TypeError: argument of type 'NoneType' is not iterable [Python 3.X]


Sujet :

Bibliothèques tierces Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Scrapy : TypeError: argument of type 'NoneType' is not iterable
    Bonjour,

    J'ai un code qui s’exécute parfaitement dans la console python, mais lorsque je lance ma spider, j'ai une erreur en retour : TypeError: argument of type 'NoneType' is not iterable


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
        def parse(self, response):
     
            # TABLEAU ARRIVEE ==============================================================
     
            tab_arrivee_th = response.css('.arrivees th::text').extract()
     
            #ci dessous la réponse que me retourne 'scrapy shell' avec response.css('.arrivees th::text').extract()
            # tab_arrivee_th =  ['Cl.', 'N°', 'Cheval', 'S/A', 'Œill.', 'Poids', 'Corde', 'Ecart', 'Jockey', 'Entraîneur']
     
            if 'Jockey' in tab_arrivee_th:
                col_jockey = tab_arrivee_th.index('Jockey') + 1
            elif 'Driver' in tab_arrivee_th:
                col_jockey = tab_arrivee_th.index('Driver') + 1
            else:
                col_jockey = 0
     
            jockey  = response.css('td:nth-child(' + str(col_jockey) + ') > a::text').extract()
     
     
    # erreur obtenue :  if 'Jockey' in tab_arrivee_th:
    TypeError: argument of type 'NoneType' is not iterable
    Je ne comprends pas, car cela fonctionne parfaitement en test.
    il doit y avoir un souci avec "tab_arrivee_th = response.css('.arrivees th::text').extract()" , mais j'ai un bien un retour, et la liste n'est pas vide.

    Merci pour votre aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Python vous dit que tab_arrivee_th est None.
    Comme tab_arrivee_th est construit avec le contenu de response qu'on ne peut pas regarder pour vous pour vérifier que...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Python vous dit que tab_arrivee_th est None.
    Comme tab_arrivee_th est construit avec le contenu de response qu'on ne peut pas regarder pour vous pour vérifier que...

    - W
    Merci pour la réponse.

    response donne bien une liste, je viens de vérifier, j'ai commenté mon code jockey, et enregistré la variable tab_arrivee_th dans un csv en lançant la spider. Et j'ai bien un réponse avec une liste : ['Cl.', 'N°', 'Cheval', 'S/A', 'Œill.', 'Poids', 'Corde', 'Ecart', 'Jockey', 'Entraîneur']
    Ce que j'avais d'ailleurs déjà vérifié dans scrapy shell.

    Quand pensez-vous ?


    EDIT : Je viens de trouver, la ligne response était certainement construite en js, et était vide au lancement de la spider, j'ai ajouté un code scrapy-splash pour avoir 0.5 seconde de délais et ainsi avoir une réponse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [V8] erreur module odoo v8 TypeError: type() argument 1 must be string, not tuple
    Par BXDSPORT dans le forum Odoo (ex-OpenERP)
    Réponses: 2
    Dernier message: 16/07/2018, 13h18
  2. [Python 3.X] Probleme "argument of type 'int' is not iterable"
    Par nono9196 dans le forum Général Python
    Réponses: 2
    Dernier message: 04/07/2018, 17h55
  3. TypeError: argument of type 'int' is not iterable
    Par salemeone dans le forum Général Python
    Réponses: 1
    Dernier message: 17/04/2014, 17h09
  4. TypeError: argument of type 'bool' is not iterable
    Par benoxy dans le forum Odoo (ex-OpenERP)
    Réponses: 7
    Dernier message: 04/01/2014, 21h48
  5. Réponses: 15
    Dernier message: 18/02/2009, 18h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo