2017-01-14 4 views
-1

Dans le code suivant, je ne peux pas franchir la première déclaration if et passez à l'autre statement, même quand je fais à dessein faux:Flow Control, Si instruction de boucle, instruction else ne pas exécuter

while not scraped: 
    print("sleep....") 
    time.sleep(1) 
    try: 
     res = requests.get(url).content 
     soup = BeautifulSoup(res, 'lxml') 
     links = soup.find_all("span", {"id":"reasonabledoubt"}) 
     dip = soup.find_all("div") 
     print("searching divs") 
     if 'keyword' in str(dip) == True: 
      print(url) 
      print("LINK SCRAPED") 
      print(url + " link scraped") 
      scraped = True 
     else: 
      for word in links: 
       print("testing for loop") 
       #rest of code 

Donc, fondamentalement, si le mot-clé n'est pas trouvé dans str (dip), j'ai besoin de la clause else à exécuter.

+0

Vous pouvez réduire cet exemple à une ou deux lignes de code. Voyez comment créer un [mcve]. –

+0

@PeterWood, je ne savais pas si inclure la boucle while et 'try' étaient pertinents pour le problème auquel je suis confronté, la réponse suggérée n'a pas fonctionné pour moi ... – ColeWorld

+0

La réponse devrait le résoudre sauf si vous avez un autre problème ; Je suppose que vous êtes en train de rechercher la chaîne '' mot-clé'' plutôt qu'une variable appelée 'mot-clé' –

Répondre

2

Vous devez:

if 'keyword' in str(dip): 

Votre ancienne syntaxe:

if 'keyword' in str(dip) == True: 

équivaut à:

if 'keyword' in str(dip) and str(dip) == True 

C'est Python's chaining behaviour.