해결된 IndexError: 목록 인덱스가 범위를 벗어남

해결됨(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" 칼럼 에 포함되어 있습니다.

이 칼럼은 팬그룹 내 소규모 파트너들이 제기한 다양한 문제는 물론 학업과 업무에서 마주치는 다양한 어려운 버그들을 기록하는 데 사용됩니다. 프로그램 진행 과정에서 다른 문제 발생 , 칼럼 구독 + 블로거 팔로우 후, 다른 문제가 발생하면 비공개 채팅을 통해 해결해 보세요! ! !

рекомендация

отblog.csdn.net/yuan2019035055/article/details/126342734