Я попытался очистить около 45000 ссылок с веб-сайта IMDB, используя Beautifulsoup и добавить его в список python. После долгой очистки функции len()
показывают правильное число, но когда я проверяю наличие дубликатов в списке (по list(dict.fromkeys(action_links))
), кажется, что есть только 10000 уникальных элементов. Кто-нибудь может понять, как этот процесс может быть неправильным? Вот код:
import requests
from bs4 import BeautifulSoup
from time import sleep
from random import randint
action_links = []
page_number = 0
for i in range(1,45934,50):
url = f'https://www.imdb.com/search/title/?title_type=feature&genres=action&start={i}&explore=genres&ref_=adv_nxt'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
page_number += 1
box = soup.find('div', class_='article') #The big container of all the 50 movies in the page
links = box.find_all('div', class_='lister-item mode-advanced') #Each smaller box containing the data about each movie
for j in range(len(links)):
action_links.append(links[j].h3.a['href']) #This script extracts the exact link
if page_number%10 == 0: #This part is only for logging
print(f"Done: Pages {page_number-9} to {page_number}, from {i-450} to {i+49}")
sleep(randint(4,7))
len(action_links)
>>> 45500
len(list(set(action_links)))
>>> 10000