2017-07-13 7 views
0
start_urls = ['https://github.com/login'] 

def parse(self, response): 
    return scrapy.FormRequest.from_response(response,formdata={'login': 'xx', 
              'password': 'xx'},callback=self.after_login) 

def after_login(self, response): 
    if "authentication failed" in response.body: 
     self.logger.info("fail xx %s", response.body) 

J'ai essayé le code ci-dessus en référence au document, mais l'erreur suivante s'est produite.comment éviter l'erreur "TypeError: un objet de type octets est requis, pas" str "" dans scrapy

if "authentication failed" in response.body: 
TypeError: a bytes-like object is required, not 'str' 

Il ressemble à un fichier binaire dans response.body. Y a-t-il un moyen d'éviter cette erreur?

et je suis curieux que généralement, si la connexion échoue, si "l'authentification a échoué" est affiché dans response.body?

Merci d'avoir lu ma question.

Répondre

1

response.body est une valeur bytes, mais "authentication failed" est un str. Vous ne pouvez pas mélanger les types.

Utilisez un bytes littéral:

if b"authentication failed" in response.body: 
+0

Merci de votre réponse rapide. Je l'ai résolu sans erreur. –

+0

Content d'avoir été utile! N'hésitez pas à [accepter ma réponse] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) si vous pensez que cela vous a été utile. :-) –