【问题标题】:ValueError: arrays must all be same length during getting priceValueError:获取价格期间数组的长度必须相同
【发布时间】:2022-01-06 06:18:55
【问题描述】:

这是我的代码。我正在尝试将产品名称及其价格放在一起。但它们的长度不同。 len(pricesList) == 18 / len(namesList) == 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:\Users\ain01tr\Desktop\Çalışma Dosyası\Python\Projeler\Getting Price\chromedriver.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()

成功了。但这不是我想要的一种数据。 NaN 价格会自动进入最后一个索引,因此它不正确。我该如何解决这个问题?

我希望我的解释没问题。我是这个平台的新手。

提前致谢。

【问题讨论】:

  • 您的定位器未采用“特价”价格。你不需要它还是因为你不知道如何创建这样的定位器而跳过它?
  • 感谢您的评论。因为你,我才知道原因。特殊或正常。没关系。这对我来说没什么大不了的。我该如何解决这个跳过的问题?
  • 这是价格不匹配的主要原因。无论如何,您的问题陈述不清楚。您提到“我尝试使用以下代码解决问题:”,您尝试解决什么问题?外行术语,您的预期输出是多少,您的实际输出是多少?实际输出有什么问题?这种信息会更清楚。
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
  • @QualityMatters 感谢您的支持我解决了这个问题。我的主要问题是价格不匹配。我的数据正确无误。

标签: python pandas dataframe selenium selenium-webdriver


【解决方案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)

【讨论】:

    猜你喜欢
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    相关资源
    最近更新 更多