簡體   English   中英

使用 Selenium 加載整個頁面后,我的代碼在前 100 個項目后停止抓取?

[英]After using Selenium to load the whole page, my code stop scraping after the first 100 items?

我想在我的個人 IMDb 觀看列表中獲取所有電影/系列的列表。 我正在使用 selenium 單擊加載更多按鈕,以便所有內容都顯示在 html 代碼中。 但是,當我嘗試抓取該數據時,只會顯示前 100 部電影。 'page3' 之后的任何內容都不會顯示。

下圖顯示了 html 中表示第 3 頁的部分:

在這張照片中,顯示了第 3 頁的 html 部分

單擊帶有 selenium 的加載按鈕后,所有電影都會顯示在 chrome 彈出窗口中。 但是,只有前 100/138 被打印到我的控制台。

這是 URL: https://www.imdb.com/user/ur130279232/watchlist

這是我當前的代碼:

    URL = "https://www.imdb.com/user/ur130279232/watchlist"
    
    driver = webdriver.Chrome()
    wait = WebDriverWait(driver,20)
    
    driver.get(URL)
 
while True:
    try:
        watchlist = driver.find_element_by_xpath("//div[@class='lister-list mode-detail']")
        watchlistHTML = watchlist.get_attribute('innerHTML')
        loadMoreButton = driver.find_element_by_xpath("//button[@class='load-more']")
        soup = BeautifulSoup(watchlistHTML, 'html.parser')
        content = soup.find_all('h3', class_ ='lister-item-header')
        #pdb.set_trace()
        print('length: ',len(content))
        for elem in content:
            print(elem.find('a').contents[0])

        time.sleep(2)
        loadMoreButton.click()
        time.sleep(5)
    except Exception as e:
        print(e)
        break

即使在單擊加載更多按鈕后,“lister-list mode-detail”仍包含音樂之聲之前的所有內容?

如果您可以訪問 HTTP GET,@balderman 提到的內容將起作用。

最主要的是標題的加載有延遲,並且在加載較早的標題之前不會加載較晚的標題。 我不知道它們是否只在您位於正確的區域時才加載,但是繞過它的一種笨拙的方法是以編程方式滾動頁面並讓它加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM