Как я могу исправить эту ошибку: IndexError: индекс списка вне диапазона

#python #python-3.7

#python #python-3.7

Вопрос:

Я очищаю веб-сайт flipkart. Какие изменения мне нужно внести в код, чтобы эта ошибка исчезла и имя элемента было напечатано?

 import requests
from bs4 import BeautifulSoup as soup
r=requests.get("https://www.flipkart.com/search?q=iphoneamp;otracker=searchamp;otracker1=searchamp;marketplace=FLIPKARTamp;as-show=onamp;as=off")
c=r.content
a=soup(c,"html.parser")
all=a.find_all("div",{"class":"bhgxx2 col-12-12"})
b=len(all)

print(all[1].find_all("div",{"class":"_3wU53n"})[1].get_text)
  

вывод

 Traceback (most recent call last):
  File "1.py", line 12, in <module>
    print(all[1].find_all("div",{"class":"_3wU53n"})[1].get_text)
IndexError: list index out of range
  

Ответ №1:

Привет, Praneet и добро пожаловать в Stack Overflow!
Я запустил ваш код, и мне кажется, что вы видите IndexError: list index out of range ошибку, потому что BeautifulSoup на самом деле не можете найти a div с class=_3wU53n в HTML и поэтому возвращаете пустой список ( [] ). Вы можете проверить сами, изменив свою последнюю строку на:
print(all[1].find_all("div",{"class":"_3wU53n"})
Поскольку список пуст, вы, очевидно, не можете получить доступ ни к одному элементу в нем, поскольку таковых нет.

Ответ №2:

print(all[1].find_all("div",{"class":"_3wU53n"})[1].get_text) выдаст только одно значение нулевого индекса, и вы используете индекс 1, поэтому он выдает ошибку.