해결됨(Python 크롤러가 목록 오류를 탐색함) IndexError: 목록 색인이 범위를 벗어남
에러 코드
팬그룹 친구가 리퀘스트 크롤러를 이용해서 Xpath에 있는 데이터 목록을 순회하려다 오류가 발생했습니다. 문제를 해결하는 데 성공했습니다. 그런데 기록을 만들고 이 버그가 발생하여 해결하지 못하는 더 많은 친구를 돕기를 희망합니다. 오류 코드는 다음과 같습니다 .
import requests
from lxml import etree
text = requests.get("https://www.baidu.com").content.decode()
html = etree.HTML(text)
div_divst = html.xpath("//div")
for div in div_divst:
title = div.xpath("@title")[0]
url = div.xpath("@url")[0]
오류 메시지는 다음과 같습니다 .
IndexError: list index out of range
오류 번역
오류 메시지 번역 :
인덱스 오류: 목록 인덱스가 범위를 벗어났습니다.
오류 이유
목록 색인이 범위를 벗어남 오류에 대한 두 가지 주요 이유가 있습니다.
- 한 가지 가능성은 아래 첨자가 범위를 벗어날 수 있다는 것입니다.
- 하나는 목록이 비어 있고 요소가 없을 수 있습니다.
팬의 크롤러 코드는 분명히 Xpath가 데이터를 찾지 못하기 때문에 목록이 비어 있고 list[0]이 오류를 보고합니다.친구 여러분, 아래 단계에 따라 해결하세요! ! !
해결책
예외를 사용하여 Xpath 위치 지정을 캡처하고, 오류가 보고되면 예외를 캡처하고 제목과 URL을 없음에 할당합니다.
import requests
from lxml import etree
text = requests.get("https://www.baidu.com").content.decode()
html = etree.HTML(text)
div_divst = html.xpath("//div")
for div in div_divst:
try:
title = div.xpath("@title")[0]
url = div.xpath("@url")[0]
except:
title = None
url = None
돕다
이 기사는 "Farewell to Bug" 칼럼 에 포함되어 있습니다.
이 칼럼은 팬그룹 내 소규모 파트너들이 제기한 다양한 문제는 물론 학업과 업무에서 마주치는 다양한 어려운 버그들을 기록하는 데 사용됩니다. 프로그램 진행 과정에서 다른 문제 발생 , 칼럼 구독 + 블로거 팔로우 후, 다른 문제가 발생하면 비공개 채팅을 통해 해결해 보세요! ! !