2016-07-12 6 views
-1

このコードを実行すると、エラーメッセージ "IndexError:リストのインデックスが範囲外です"が表示されます。これを避けるために私は何ができますか?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

空リストの最初の要素( 'seq [0]')は何ですか? –

+0

同じセレクトを2回実行せず、変数として保存し、 –

答えて

0

リストが空であるかどうかを確認していません。試してみてください

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

が完全に機能するようにしてください。ありがとうございました!! –

関連する問題