IndexError: list index out of range. Trying to create a list of dictionaries for BeatifulSoup items
IndexError: list index out of range. Trying to create a list of dictionaries for BeatifulSoup items
我正在尝试创建一个字典列表,其中包含从网站上抓取的数据。
数据列表:价格,每克价格,品牌。
在第一部分中,我提取价格和 price_per_gramm 并将数据附加到列表中,一切正常。
现在我有一个字典列表,其中唯一的一个字段“品牌”是空的。
所以我尝试用实际数据替换那些空字段并遇到 IndexError.
soup = BeautifulSoup(open("./FULL_data.html"), "html.parser")
list_of_sku = []
for divs in soup.find_all('div', attrs={"class" : "col-xs-6 col-sm-4"}):
item = {"Brand": "",
"price": "",
"price per gramm": ""}
links = divs.find_all("tr")
for row in links:
# We get list of prices here
item_text = row.find('td')
item_text2 = row.find('span', {"class": "text-primary"}).text
if item_text and item_text2:
item["price"] = str(item_text.text)
item["price per gramm"] = str(item_text2)
list_of_sku.append(item)
#We get a brand here
i=0
for row in soup.find_all('div', attrs={"class" : "js-equalized-brand"}):
list_of_sku[i]["Brand"] = str(row.text)
print(list_of_sku[i]["Brand"])
i += 1
print(list_of_sku)
这是一个错误:
Original Stash
Traceback (most recent call last):
File "/Users/PycharmProjects/MyFirstOne/WEBSCRAPING/Work with Soup data.py", line 41, in <module>
list_of_sku[i]["Brand"] = str(row.text)
IndexError: list index out of range
请帮忙寻找解决办法。
for divs in soup.find_all('div', attrs={"class" : "col-xs-6 col-sm-4"}):
之间的缩进级别不同
和
i=0
for row in soup.find_all('div', attrs={"class" : "js-equalized-brand"}):
list_of_sku[i]["Brand"] = str(row.text)
print(list_of_sku[i]["Brand"])
i += 1
print(list_of_sku)
从而导致每个 divs
的第二个循环为 'play'。 (也重置)。
我正在尝试创建一个字典列表,其中包含从网站上抓取的数据。 数据列表:价格,每克价格,品牌。
在第一部分中,我提取价格和 price_per_gramm 并将数据附加到列表中,一切正常。 现在我有一个字典列表,其中唯一的一个字段“品牌”是空的。 所以我尝试用实际数据替换那些空字段并遇到 IndexError.
soup = BeautifulSoup(open("./FULL_data.html"), "html.parser")
list_of_sku = []
for divs in soup.find_all('div', attrs={"class" : "col-xs-6 col-sm-4"}):
item = {"Brand": "",
"price": "",
"price per gramm": ""}
links = divs.find_all("tr")
for row in links:
# We get list of prices here
item_text = row.find('td')
item_text2 = row.find('span', {"class": "text-primary"}).text
if item_text and item_text2:
item["price"] = str(item_text.text)
item["price per gramm"] = str(item_text2)
list_of_sku.append(item)
#We get a brand here
i=0
for row in soup.find_all('div', attrs={"class" : "js-equalized-brand"}):
list_of_sku[i]["Brand"] = str(row.text)
print(list_of_sku[i]["Brand"])
i += 1
print(list_of_sku)
这是一个错误:
Original Stash
Traceback (most recent call last):
File "/Users/PycharmProjects/MyFirstOne/WEBSCRAPING/Work with Soup data.py", line 41, in <module>
list_of_sku[i]["Brand"] = str(row.text)
IndexError: list index out of range
请帮忙寻找解决办法。
for divs in soup.find_all('div', attrs={"class" : "col-xs-6 col-sm-4"}):
和
i=0
for row in soup.find_all('div', attrs={"class" : "js-equalized-brand"}):
list_of_sku[i]["Brand"] = str(row.text)
print(list_of_sku[i]["Brand"])
i += 1
print(list_of_sku)
从而导致每个 divs
的第二个循环为 'play'。 (也重置)。