J'ai une fonction qui me permet d'obtenir tous les titres de mon site Web. Je ne veux pas obtenir le titre de certains produits. Est-ce la bonne façon? je ne veux pas de titres de produits avec les mots "OLP NL" ou "Arcserve" ou "LicSAPk" ou "symantec"

def get_title ( u ):
html = requests.get ( u )
bsObj = BeautifulSoup ( html.content, 'xml' )
title = str ( bsObj.title ).replace ( '<title>', '' ).replace ( '</title>', 
'' )
if (title.find ( 'Arcserve' ) or title.find ( 'OLP NL' ) or title.find ( 
'LicSAPk' ) or title.find (
        'Symantec' ) is not -1):
    return 'null'
else:
    return title

            if (title != 'null'):
            ws1 [ 'B1' ] = title
            meta_desc = get_metaDesc ( u )
            ws1 [ 'C1' ] = meta_desc
            meta_keyWrds = get_metaKeyWrds ( u )
            ws1 [ 'D1' ] = meta_keyWrds
            print ( "writing product no." + str ( i ) )
        else:
            print("skipped product no. " + str ( i ))
            continue;

Le problème est que le programme exclut tous mes produits et tout ce que je vois est "produit ignoré non". ? pourquoi? tous n'ont pas ces mots ...

-1
Dvir Yadai 8 mars 2019 à 19:30

2 réponses

Meilleure réponse

Vous pouvez modifier l'instruction if pour (title.find ( 'Arcserve' )!=-1 or title.find ( 'OLP NL' )!=-1 or title.find ('LicSAPk' )!=-1 or title.find ('Symantec' )!=-1) ou créer une fonction pour évaluer les termes que vous souhaitez rechercher

def TermFind(Title):
    terms=['Arcserve','OLP NL','LicSAPk','Symantec']
    disc=False
    for val in terms:
        if Title.find(val)!=-1:
            disc=True
            break
    return disc

Lorsque j'ai utilisé l'instruction if retournait toujours True quelle que soit la valeur du titre. Je n'ai pas trouvé d'explication à un tel comportement, mais vous pouvez essayer de vérifier ceci [Python != opération vs "n'est pas" et [imbriqués "et/ou" if instructions< /a>. J'espère que ça aide.

1
TavoGLC 8 mars 2019 à 19:28

Une idée similaire en utilisant any

import requests 
from bs4 import BeautifulSoup

url = 'https://www.cdsoft.co.il/index.php?id_product=300610&controller=product'
html = requests.get(url)
bsObj = BeautifulSoup(html.content, 'lxml')
title = str ( bsObj.title ).replace ( '<title>', '' ).replace ( '</title>', '' )
items = ['Arcserve','OLP NL','LicSAPk','Symantec']

if not any(item in title for item in items):
    print(title)
0
QHarr 9 mars 2019 à 16:08