Ten kod dotyczy skrobania stron internetowych. Problem polega na tym, że gdy uruchamiam ten kod, pojawia się błąd „ValueError: długość przekazywanych wartości wynosi 6, indeks implikuje 7”. Jak mogę naprawić ten błąd. wartości langth to, ale długość indeksu to 7, dlatego pojawia się błąd.

import requests
from bs4 import BeautifulSoup
import pandas as pd

url="https://en.wikipedia.org/wiki/List_of_Game_of_Thrones_episodes"
page=requests.get(url)
soup=BeautifulSoup(page.text,'html.parser')

table=soup.find('table',{'class':'wikitable plainrowheaders wikiepisodetable'}).tbody

rows=table.find_all('tr')

columns=[v.text.replace('\u200a[20]','') for v in rows[0].find_all('th')]

df=pd.DataFrame(columns=columns)

for record in range(1,len(rows)):
    tds=rows[record].find_all('td')

    if len(tds)==4:
        values=[tds[0].text,tds[1].text,tds[2].text,tds[3].text]
    else:
        values=[td.text for td in tds]

    df=df.append(pd.Series(values,index=columns),ignore_index=True)

    print(df)

Zając to błąd w linii numer 25, błąd podano poniżej.

  File "good.py", line 25, in <module>
    df=df.append(pd.Series(values,index=columns),ignore_index=True)
  File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\core\series.py", line 300, in __init__
    raise ValueError(
ValueError: Length of passed values is 6, index implies 7```

how can i solve this problem:::::

1
mahedi hassan 19 grudzień 2019, 20:48

1 odpowiedź

Przeszukałem szybko Google i znalazłem to. Wygląda na to, że próbujesz odwołać się do pustej ramki danych.

Nie pracowałem z Numpy i dlatego nie wiem, co to jest dataframe i co ma robić, ale poszedłem i spojrzałem na Twój kod i wygląda na to, że pd.Series(values,index=columns) oczekuje długości {{X1} } i columns są równe.

Sprawdziłem twój kod i zobaczyłem, że długości nie są takie same. Długość values to 6, podczas gdy długość columns to 7. Stąd błąd.

Sprawdź REPL TUTAJ. Wstawiłem kilka instrukcji print, włączam je i sprawdzam wartości. Dodałem również sprawdzenie, czy długość pasuje, czy nie ... kiedy to dodałem, wygląda na to, że twój kod przeszedł dobrze.

Może nie jest to odpowiedź, której szukasz, ale dopóki ktoś nie odpowie, sugeruję, abyś zajrzał do swoich values i columns

1
Xonshiz 19 grudzień 2019, 21:06