2016-07-12 3 views
-1

Bei der Ausführung dieses Codes bekomme ich immer die Fehlermeldung: "IndexError: Liste Index außerhalb des Bereichs". Was kann ich tun, um dies zu vermeiden?Wie vermeiden "Listenindex außerhalb des Bereichs" in BeautifulSoup (Python)

import urllib 
thisurl = "http://www.tutti.ch/stgallen/fahrzeuge/autos" 
handle = urllib.urlopen(thisurl) 
html_gunk = handle.read() 

from bs4 import BeautifulSoup 
soup = BeautifulSoup(html_gunk, 'html.parser') 

for first in soup.find_all("li", class_="li-in"): 
    #print first.select("em.fl.in-date") 
    if (first.select("em.fl.in-date")[0].text is not None): 
     time = first.select("em.fl.in-date")[0].text 
     if (len(time) > 0): 
      if first.select("em.fl.in-date")[0].text[6] == "H": 
       zeit = first.select("em.fl.in-date")[0].text[11:16] 
      print zeit 
      if first.select("em.fl.in-date")[0].text[6] == "G": 
       zeit = first.select("em.fl.in-date")[0].text[13:18] 
       print zeit 
+0

Was ist ein erstes ('seq [0]') Element der leeren Liste? –

+0

Tun Sie nicht die selbe Auswahl zweimal, speichern Sie es als eine Variable und verwenden Sie es –

Antwort

0

Sie verpassen eine Prüfung, um festzustellen, ob die Liste leer ist oder nicht. Versuchen Sie diese

import urllib 
thisurl = "http://www.tutti.ch/stgallen/fahrzeuge/autos" 
handle = urllib.urlopen(thisurl) 
html_gunk = handle.read() 

from bs4 import BeautifulSoup 
soup = BeautifulSoup(html_gunk, 'html.parser') 

for first in soup.find_all("li", class_="li-in"): 
    #print first.select("em.fl.in-date") 
    if first.select("em.fl.in-date") is not None and len(first.select("em.fl.in-date")) > 0: 
     if (first.select("em.fl.in-date")[0].text is not None): 
      time = first.select("em.fl.in-date")[0].text 
      if (len(time) > 0): 
       if first.select("em.fl.in-date")[0].text[6] == "H": 
        zeit = first.select("em.fl.in-date")[0].text[11:16] 
       print zeit 
       if first.select("em.fl.in-date")[0].text[6] == "G": 
        zeit = first.select("em.fl.in-date")[0].text[13:18] 
        print zeit 
+0

funktioniert perfekt. Danke!! –

Verwandte Themen