2011-09-06 6 views
0

파이썬 2.7을 사용하고 있습니다. 이 코드를 실행하려고하면 함수가 findPatTitle [i]를 인쇄하고 python이 "Index Error : list index of range"를 반환 할 때 문제가 발생합니다. 내가 13 번째 파이썬 튜토리얼에서 유튜브에이 코드를 가져갈거야, 그리고 난 꽤 코드가 동일하므로, 왜 내가 범위 문제를 얻을지 모르겠다 확신 해요. 어떤 아이디어?파이썬에서 기본 웹 스크래핑을 실행할 때 인덱스 오류가 발생했습니다.

from urllib import urlopen 
from BeautifulSoup import BeautifulSoup 
import re 

webpage = urlopen('http://feeds.huffingtonpost.com/huffingtonpost/LatestNews').read() 

patFinderTitle = re.compile('<title>(.*)<title>') 

patFinderLink = re.compile('<link rel.*href="(.*)" />') 

findPatTitle = re.findall(patFinderTitle,webpage) 
findPatLink = re.findall(patFinderLink,webpage) 

listIterator = [] 
listIterator[:] = range(2,16) 

for i in listIterator: 
    print findPatTitle[i] 
    print findPatLink[i] 
    print "\n" 
+2

왜 BeautifulSoup를 가지고있을 때 정규식을 사용하여 html을 파싱합니까? o.O 정규식으로 HTML을 파싱해서는 안됩니다 ... http://stackoverflow.com/questions/590747/using-regular-expressions-to-parse-html-why-not – naeg

답변

0

제목과 링크 태그를 알아 내기 위해 정규식을 관리하면 findall을 사용할 때 일치하는 문자열 목록을 얻게됩니다. 이 경우 반복하여 인쇄 할 수 있습니다.

처럼 : 당신은 16에 2에서 요소 목록에 액세스하려고 및 중 제목이나 링크 16 개 요소가 없기 때문에 당신이 점점

for title in findPatTitle: 
    print title 

for link in findPatLink: 
    print link 

인덱스 오류입니다.

참고 : listIterator[:] = range(2,16)은 이러한 목적으로 코드를 작성하는 좋은 방법이 아닙니다. 그냥 사용할 수 있습니다

for i in range(2, 16) 
    # use i 
+0

팁 주셔서 감사. 내 코드에 문제가있어서 findPatTitle은 (. *)이어야합니다. 미안합니다. –

관련 문제