Выборка очищенного списка с проблемой BS4 vs Preset Data (почему она не работает так же?) - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь сохранить эти извлеченные данные в файл (протравить их), но не могу понять, почему я не могу протолкнуть их следующим кодом:

url = "https://www.imdb.com/list/ls016522954/?ref_=nv_tvv_dvd"

req = Request(url, headers={'User-Agent': 'Mozilla/5.0'})
web_byte = urlopen(req).read()
webpage = web_byte.decode('utf-8')
html_soup = BeautifulSoup(webpage, 'html5lib')
dvdNames = html_soup.find_all("div", class_="lister-item-content")
for dvd in dvdNames:
    dvdArray.append(dvd.a.string)
viewtitles = input("Finished!, do you want to view the DVD titles? (Y/N): ")
if viewtitles == "y".casefold():
    num = 1
    for name in dvdArray:
        print(""+ str(num) + " - " + name)
        num += 1
elif viewtitles == "n".casefold():
    print("Not Showing TItles!")
else:
    print("that is not an option!")
saveToFile = input("Do you want to save / update the data? (Y/N): ")
if saveToFile == "y".casefold():
    with open("IMDBDVDNames.dat", "wb") as f:
        pickle.dump(dvdArray, f)
        continue
elif saveToFile == "n".casefold():
    print("Data Not Saved!")
    continue
else:
    print("That's not one of the option!")
    continue

Я попытался добавить sys.setrecursionlimit ( 1000000), и это не имеет значения (FYI), и я получаю эту ошибку «максимальная глубина рекурсии превышена при выборе объекта», но когда я запускаю этот код:

import pickle

testarray = []

if input("1 or 2?: ") == "1":
    testarray = ['1917', 'Onward', 'The Hunt', 'The Invisible Man', 'Human Capital', 'Dolittle', 'Birds of Prey: And the Fantabulous Emancipation of One Harley Quinn', 'The Gentlemen', 'Bloodshot', 'The Way Back', 'Clemency', 'The Grudge', 'I Still Believe', 'The Song of Names', 'Treadstone', 'Vivarium', 'Star Wars: Episode IX - The Rise of Skywalker', 'The Current War', 'Downhill', 'The Call of the Wild', 'Resistance', 'Banana Split', 'Bad Boys for Life', 'Sonic the Hedgehog', 'Mr. Robot', 'The Purge', 'VFW', 'The Other Lamb', 'Slay the Dragon', 'Clover', 'Lazy Susan', 'Rogue Warfare: The Hunt', 'Like a Boss', 'Little Women', 'Cats', 'Madam Secretary', 'Escape from Pretoria', 'The Cold Blue', 'The Night Clerk', 'Same Boat', 'The 420 Movie: Mary & Jane', 'Manou the Swift', 'Gold Dust', 'Sea Fever', 'Miles Davis: Birth of the Cool', 'The Lost Husband', 'Stray Dolls', 'Mortal Kombat Legends: Scorpions Revenge', 'Just Mercy', 'The Righteous Gemstones', 'Criminal Minds', 'Underwater', 'Final Kill', 'Green Rush', 'Butt Boy', 'The Quarry', 'Abe', 'Bad Therapy', 'Yip Man 4', 'The Last Full Measure', 'Looking for Alaska', 'The Turning', 'True History of the Kelly Gang', 'To the Stars', 'Robert the Bruce', 'Papa, sdokhni', 'The Rhythm Section', 'Arrow', 'The Assistant', 'Guns Akimbo', 'The Dark Red', 'Dreamkatcher', 'Fantasy Island', 'The Etruscan Smile', "A Nun's Curse", 'Allagash']
    with open("test.dat", "wb") as f:
        pickle.dump(testarray, f)
else:
    with open("test.dat", "rb") as f:
        testarray = pickle.load(f)

print(testarray)

с точно таким же (в по крайней мере, я надеюсь, что это то же самое, я сделал распечатку (dvdArray) и получил информацию о списке таким образом, к вашему сведению, но она ДАЕТ мне мариновать ее, когда я делаю это таким образом

может кто-нибудь сообщить мне, почему и как Я могу это исправить?

Я знаю, что собираю данные с веб-сайта и преобразовываю их в список, но не могу понять, что является причиной ошибки в примере 1 против примера 2

любой Мы будем признательны за помощь

Спасибо,

lttlejiver

1 Ответ

0 голосов
/ 17 апреля 2020

В случае, если кому-то интересно, я добавил "strip ()", когда добавлял dvdArray, и он работал!

dvdArray.append(dvd.a.string.strip())
...