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

#python #pandas #dataframe #selenium #selenium-webdriver

#питон #панды #фрейм данных #селен #селен-веб-драйвер

Вопрос:

Это мой код. Я пытаюсь сопоставить названия продуктов с их ценами. Но они не имеют одинаковой длины. len(Прайс-лист) == 18 / len(список имен) == 19. Все нормально. Я знаю, в чем проблема. Для получения более подробной информации, пожалуйста, прокрутите страницу вниз.

 import math import requests import pandas as pd from bs4 import BeautifulSoup from urllib.parse import urljoin import unicodecsv as csv import time import datetime from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By  from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC  from csv import reader  driver = webdriver.Chrome(executable_path=r"C:Usersain01trDesktopÇalışma DosyasıPythonProjelerGetting Pricechromedriver.exe") driver.get("https://www.elryan.com/en/search?q=jelly") namesList = [] pricesList = [] names = driver.find_elements_by_css_selector(".mb0.cl-accent.mt10.product-name") for name in names:  namesList.append(name.text) prices = driver.find_elements_by_css_selector(".price-regular.lh30.cl-primary.weight-700") for price in prices:  pricesList.append(price.text)   data = pd.DataFrame({'Name' : namesList, 'Price': pricesList})  

Я попытался решить проблему с помощью приведенного ниже кода:

 #a = {'Name' : namesList,'Price': pricesList} #data = pd.DataFrame.from_dict(a, orient='index') #data.transpose()  

Это сработало. Но это не тот вид данных, который мне нужен. Цена автоматически переходит в последний индекс, так что это неверно. Как я могу это исправить?

Я надеюсь, что мое объяснение в порядке. Я новичок на этой платформе.

Заранее спасибо.

Комментарии:

1. Ваш локатор не берет «специальную» цену. вам это не нужно или вы пропускаете его, потому что не знаете, как создать такой локатор?

2. Спасибо за комментарий. Я понял причину из-за тебя. Особенный или нормальный. Не имеет значения. для меня это не имеет большого значения. Как я могу исправить этот пропуск?

3. Это основная причина несоответствия цен. В любом случае, ваша постановка проблемы не ясна. Вы упомянули «Я пытался решить проблему с помощью кода ниже:», какую проблему вы пытались решить? Термин непрофессионала, каков ваш ожидаемый результат и каков ваш фактический результат? В чем проблема с фактическим объемом производства? Такого рода информация даст больше ясности.

4. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы выделить именно то, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.

5. @QualityMatters спасибо вам за вашу поддержку, я решил проблему. Моей главной проблемой было несоответствие цен. Я правильно получил свои данные.

Ответ №1:

до

 prices = driver.find_elements_by_css_selector(".price-regular.lh30.cl-primary.weight-700") for price in prices: pricesList.append(price.text)  

после

 prices = driver.find_elements_by_css_selector(".lh30.cl-primary.weight-700") for price in prices: pricesList.append(price.text)