2017-10-17 2 views
0

Lorsque j'ai essayé d'utiliser des URL pour gratter des pages Web, j'ai trouvé que certains éléments n'existent que sur certaines pages et d'autres pas. Prenons le code par exemplePython: toutes les pages Web n'ont pas un certain élément

code:

for urls in article_url_set: 
    re=requests.get(urls) 
    soup=BeautifulSoup(re.text.encode('utf-8'), "html.parser") 
    title_tag = soup.select_one('.page_article_title') 
    if title_tag=True: 
     print(title_tag.text) 
    else: 
     #do something 

si les sorties de title_tag, je veux les imprimer, si ce n'est pas, il suffit de les sauter.

Une autre chose est que, j'ai besoin de sauvegarder d'autres éléments et title.tag.text dans les données.

data={ 
     "Title":title_tag.text, 
     "Registration":fruit_tag.text, 
     "Keywords":list2 
    } 

Il aura une cause d'erreur pas tout l'article ont un titre, que dois-je faire pour les ignorer lorsque je tente de sauver? L'objet 'NoneType' n'a pas d'attribut 'text'

Édition: Je décide de ne pas les ignorer et de les conserver comme Nul ou Aucun.

Répondre

1

Code U est erroné:

for urls in article_url_set: 
    re=requests.get(urls) 
    soup=BeautifulSoup(re.text.encode('utf-8'), "html.parser") 
    title_tag = soup.select_one('.page_article_title') 
    if title_tag=True: # wrong 
     print(title_tag.text) 
    else: 
     #do something 

votre code si title_tag = True,

changé le code title_tag == Vrai

Il est recommandé de créer des instructions conditionnelles comme suit.

title_tag == True =>True == title_tag

C'est un moyen de faire une erreur lors de faire une erreur.

Si le code est True = title_tag, une erreur se produit.

1

Vous pouvez simplement utiliser un test de vérité pour vérifier si l'étiquette est existant, sinon attribuer une valeur comme None, vous pouvez l'insérer dans le conteneur de données:

title_tag = soup.select_one('.page_article_title') 
if title_tag: 
    print(title_tag.text) 
    title = title_tag.text 
else: 
    title = None 

Ou en une ligne:

title = title_tag.text if title_tag else None 
+0

Oh merci! J'ai effectivement réglé hier. Appréciez vraiment toute votre aide! – Makiyo