Как устранить ошибку «ValueError: неверное количество пройденных элементов»? - PullRequest
0 голосов
/ 06 мая 2020

Я не могу получить данные в Excel с помощью этого кода

import requests
from bs4 import BeautifulSoup
from selenium import webdriver
import time
import pandas as pd

driver = webdriver.Chrome()
mainurl = 'https://offerup.com/explore/sck/tx/austin/cars-trucks/'
driver.get(mainurl)
res = driver.execute_script("return document.documentElement.outerHTML")
page_soup = BeautifulSoup(res, 'html.parser')
# btn = driver.find_element_by_xpath('//*[@id="react-container"]/div/div[2]/div[2]/div[2]/div[3]/button').click()
records = []
for a in page_soup.find_all('span', class_='_nn5xny4 _y9ev9r'):
    title  = a.text
    print(title)
    records.append(title)
prices = []
for b in page_soup.find_all('span', class_='_s3g03e4'):
    price =  b.text
    print(price)
    prices.append(price)
location = []
for c in page_soup.find_all('span', class_='_19rx43s2'):
    loc = c.text
    print(loc)
    location.append(loc)

df = pd.DataFrame(records, prices, location)
print(df)
df.to_csv('trymenew.csv')

Traceback (последний вызов последним):

  File "C:\Users\Saba\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\core\internals\managers.py", line 1654, in create_block_manager_from_blocks
    make_block(values=blocks[0], placement=slice(0, len(axes[0])))
  File "C:\Users\Saba\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\core\internals\blocks.py", line 3047, in make_block
    return klass(values, ndim=ndim, placement=placement)
  File "C:\Users\Saba\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\core\internals\blocks.py", line 2595, in __init__
    super().__init__(values, ndim=ndim, placement=placement)
  File "C:\Users\Saba\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\core\internals\blocks.py", line 124, in __init__
    raise ValueError(
ValueError: Wrong number of items passed 1, placement implies 44

Во время обработки вышеуказанного исключения возникло другое исключение :

Traceback (most recent call last):
  File "C:\Users\Saba\Desktop\cars_offerup.py", line 29, in <module>
    df = pd.DataFrame(records, prices, location)
  File "C:\Users\Saba\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\core\frame.py", line 488, in __init__
    mgr = init_ndarray(data, index, columns, dtype=dtype, copy=copy)
  File "C:\Users\Saba\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\core\internals\construction.py", line 210, in init_ndarray
    return create_block_manager_from_blocks(block_values, [columns, index])
  File "C:\Users\Saba\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\core\internals\managers.py", line 1664, in create_block_manager_from_blocks
    construction_error(tot_items, blocks[0].shape[1:], axes, e)
  File "C:\Users\Saba\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\core\internals\managers.py", line 1694, in construction_error
    raise ValueError(f"Shape of passed values is {passed}, indices imply {implied}")
ValueError: Shape of passed values is (44, 1), indices imply (44, 44)

У меня ошибка такого типа, не могли бы вы помочь мне решить ее?

1 Ответ

0 голосов
/ 06 мая 2020

pd.DataFrame, как мы можем видеть в документации, ожидает в качестве первого аргумента данные, но вы передали данные как 3 отдельных аргумента.

Чтобы исправить это, меняем:
df = pd.DataFrame(records, prices, location) # Wrong
на
df = pd.DataFrame([records, prices, location]) # Correct

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...