Я хочу получить информацию из продуктов супермаркета, но с учетом того, что некоторая информация (происхождение продукта) не всегда доступна.
Я пытаюсь перебрать блок данных ссылоксупермаркет.От каждого из них я хочу получить некоторую информацию.Однако происхождение продуктов не всегда доступно.Я не знаю, как заставить Python искать 'origin', только когда он доступен.Я пробовал следующий код:
import urllib.request
from bs4 import BeautifulSoup
import csv
import os
dir = ''
file = 'data.xlsx'
sheetname="Hoja1"
# create and write headers to a list
rows = []
rows.append(['Brand', 'Product', 'Product_Number', 'Gross_Weight', 'Origin'])
# Change working directory:
os.chdir(dir)
# Retrieve current working directory ('cwd'):
cwd = os.getcwd()
cwd
# Load spreadsheet:
xl = pd.ExcelFile(file)
# Load a sheet into a DataFrame by name: df1
df = xl.parse(sheetname)
for index, row in df.iterrows():
# specify the url
urlpage = row['link']
#print(urlpage)
# query the website and return the html to the variable 'page'
page = urllib.request.urlopen(urlpage)
# parse the html using beautiful soup and store in variable 'soup'
soup = BeautifulSoup(page, 'html.parser')
# find results within table
results = soup.find_all('dl', attrs={'class': 'des_info clearfix'})
#print('Number of results', len(results))
for result in results:
# find all columns per result
data = result.find_all('dd')
# check that columns have data
if len(data) == 0:
continue
# write columns to variables
brand = data[0].getText()
product = data[1].getText()
number = data[2].getText()
weight = data[3].getText()
if data[4].getText() == None:
origin = 0
else:
origin = data[4].getText()
# write each result to rows
rows.append([brand, product, number, weight, origin])
Я получаю следующую ошибку:
if data[4].getText() == None:
IndexError: list index out of range
Я хотел бы получить все данные, упорядоченные в списке, и, если источник нене доступно для одного предмета, ноль.Заранее спасибо!