Ошибка получения индекса за пределами диапазона при попытке очистить код продукта с веб-сайта (с использованием Python иPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка получения индекса за пределами диапазона при попытке очистить код продукта с веб-сайта (с использованием Python и

Сообщение Anonymous »

Описание проблемы:

Я пытаюсь автоматизировать процесс, позволяющий посетить веб-сайт и получить информацию о продуктах из топа. 100 товаров на этой странице и поместите их в файл Excel.

Пояснение кода:

У меня есть класс Webscraper, внутри которого я вызываю две функции. Сначала я вызываю функцию scroll_and_click_view_more, которая просто прокручивает веб-страницу, которую я посещаю. Затем я вызываю функцию prod_vitals, которая извлекает код продукта и названия продуктов с этой веб-страницы.

Описание ошибки:

Всякий раз, когда я запускаю код ниже, до определенного максимального значения. продуктов, код зависает после точки и выдает ошибку «Индекс вне диапазона». Если я устанавливаю max_count_of_products=50, код зависает на строке. Если я устанавливаю
max_count_of_products=100, код зависает на 93. Не существует фиксированного индекса, где Я застреваю. Если я изменю значение max_count_of_products, точка, в которой код зависает, также изменится.

Ниже прилагаю скриншоты ошибки.

max_count_of_products=50
Изображение


Найдите мой код ниже:
products_summary = []
max_count_of_products=100

def scroll_and_click_view_more(driver,href):
flag=False
last_height = driver.execute_script("return window.pageYOffset + window.innerHeight")
while True:
try:
driver.execute_script("window.scrollBy(0, 800);")
time.sleep(4)
new_height = driver.execute_script("return window.pageYOffset + window.innerHeight")
try:
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'div.product-tile')))
except Exception as e:
if new_height == last_height and flag==False:
print("Reached the end of the page and no product tiles were found: ",href)
return "No product tiles found"
else:
last_height = new_height
continue
div_count = 0
flag=True
response = driver.page_source
soup = BeautifulSoup(response, 'html.parser')
div_elements = soup.find_all('div', class_ = 'product-tile')
div_count = len(div_elements)
if(div_count > max_count_of_products):
return(driver.page_source)
else:
driver.execute_script("window.scrollBy(0, 300);")
time.sleep(3)
new_height = driver.execute_script("return window.pageYOffset + window.innerHeight")
#print(new_height)
if new_height == last_height:
return(driver.page_source)
else:
last_height = new_height
except Exception as e:
print(e)
break

def prod_vitals(soup,title,url):
count_of_items=1
products_data = [] # Array to store all product data for our excel sheet
for div in soup.find_all('div', class_ = 'product-tile'): # Iterate over each individual product-tile div tag
if count_of_items

Подробнее здесь: https://stackoverflow.com/questions/790 ... rom-a-webs
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»