【发布时间】:2020-04-08 08:35:19
【问题描述】:
我刚刚复制了 Python 网络抓取指南中使用的代码,当我在命令提示符下测试每一行时,一切正常。
但是,当我运行整个文件时,我会收到以下消息:
File "web_scrape_practice.py", line 23, in "module"
shipping = shipping_container[0].text.strip()
IndexError: list index out of range
这是我的代码:
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
my_url = "https://www.newegg.com/p/pl?d=graphics+cards"
uReq(my_url)
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")
containers = page_soup.findAll("div", {"class": "item-container"})
container = containers[4]
brandDiv = container.find("div","item-info")
for container in containers:
brand = brandDiv.div.img["title"]
title_container = container.findAll("a", {"class":"item-title"})
product_name = title_container[0].text
shipping_container = container.findAll("li", {"class":"price-ship"})
shipping = shipping_container[0].text.strip()
print("brand: " + brand)
print("product_name: " + product_name)
print("shipping: " + shipping)<br><br>
第 23 行是这个:
shipping = shipping_container[0].text.strip()
任何帮助表示赞赏。
【问题讨论】:
-
“当我在命令提示符下测试每一行时,一切正常。” 你是在为
containers的每个元素测试这个吗? -
IndexError: list index out of range表示您正在尝试访问不在列表中的对象(例如访问 3 对象长列表中的第 6 个对象)。这意味着container.findAll以某种方式返回一个空列表。可以测试列表是否至少有 1 个元素长if len(shipping_container) > 0 -
错误很明显。索引超出范围。使用
try/except或if条件处理。
标签: python html indexing error-handling beautifulsoup