2017-10-14 6 views
0

Je suis en train de gratter un site Web avec Beautiful Soup. Je cherche le texte "prtype" dans une table. Mon problème est, cette colonne n'existe pas toujours.python beautifulsoup .text Aucune Type

Si la colonne existe le code suivant fonctionne très bien:

prtyp = soup.find("dd", attrs={"class":"is_type g"}).text.strip() 

Mais, s'il n'y a pas de colonne avec cette classe, je reçois l'erreur suivante:

'NoneType' object has no attribute 'text' 

qui était l'un de mes essais pour se débarrasser du problème, mais prtyp est un str et je récupère les balises html entières, ou .text ne fonctionne pas. bien sûr.

prtyp = soup.find("dd", attrs={"class":"is_type g"}) 
if prtyp is None: 
    prtyp = "no type" 
else: 
    whgtyp.text.strip() 
    print("prtype:", prtype) 
+0

'essayer: whgtyp.text.strip() print ("PRTYPE:", PRTYPE); except AttributeError: prtyp = "aucun type" ' – davedwards

Répondre

0

Si vous voulez extraire cette chaîne vous pouvez faire le suivi

if "prtype" in soup.find("body").text: 
    prtyp = soup.find("dd", attrs={"class":"is_type g"}) 
    if prtyp is None: 
     prtyp = "no type" 
    else: 
     # whgtyp.text.strip() # I don't know what it does 
     print("prtype:", prtype) 

Vous pouvez vérifier si la chaîne existe dans le corps HTML, de toute façon je vois que dans votre méthode de recherche que vous cherchez un "dd" tag, si vous voulez rechercher dans un tableau, il devrait être dans un tag td (s'il s'agit d'une table HTML)

0

merci pour vos réponses. na pas essayer encore mais a trouvé une réponse d'une ligne:

prtyp = soup.find("dd", attrs={"class":"is_type g"}).text.strip() if soup.find("dd", attrs={"class":"is_type g"}) else "no type"