скрепленные элементы добавляются в список, но его длина не соответствует фактическому количеству элементов на сайте - PullRequest
0 голосов
/ 15 апреля 2020

Я попытался очистить около 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
...