如何解决此错误:IndexError:列表索引超出范围

时间:2019-03-24 09:34:18

标签: python python-3.7

我正在抓取flipkart网站。我需要在代码中进行哪些更改,以便此错误消失并打印出元素名称?

import requests
from bs4 import BeautifulSoup as soup
r=requests.get("https://www.flipkart.com/search?q=iphone&otracker=search&otracker1=search&marketplace=FLIPKART&as-show=on&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

2 个答案:

答案 0 :(得分:1)

您好Praneet,欢迎来到Stack Overflow!
我运行了您的代码,在我看来您看到了IndexError: list index out of range错误,因为BeautifulSoup实际上在HTML中找不到div的{​​{1}}并因此返回一个空列表(class=_3wU53n)。 您可以通过将最后一行更改为以下内容来检查自己:
[]
由于列表为空,您显然无法访问其中的任何元素,因为没有元素。

答案 1 :(得分:0)

print(all[1].find_all("div",{"class":"_3wU53n"})[1].get_text)将只给出索引0的一个值,而您使用索引1才是错误的原因。