Задать вопрос
  • Как спарсить все артикулы со страницы с бесконечным скроллом на Beautifulsoup + Selenium?

    @Alexa2007
    #
    # Оооооочень удобно использовать jupyter notebook
    # 
    # Beautifulsoup я не использую
    #
    # Selenium тоже многое умеет
    # но это твой выбор
    #
    #
    
    def find_all_links():
        time.sleep(2)
        posts=[]
        links = driver.find_elements_by_tag_name('a')
        for link in links:
            post = link.get_attribute('href')
            if '/p/' in post:
                posts.append( post )
        
        return posts
    
    posts = []#Для хранения результата
    def scroll_end():#Перемотка до конца страницы
        lenOfPage = driver.execute_script("window.scrollTo(0, document.body.scrollHeight);var lenOfPage=document.body.scrollHeight;return lenOfPage;")
        match=False
        global posts
        while(match==False):
            lastCount = lenOfPage
            time.sleep(3)
            lenOfPage = driver.execute_script("window.scrollTo(0, document.body.scrollHeight);var lenOfPage=document.body.scrollHeight;return lenOfPage;")
            print(lenOfPage)
            if lastCount==lenOfPage:#Если доскролили до конца
                match=True
            psts = find_all_links()#Выполняю поиск того что мне надо
            posts += psts#Результат добавляю
            print(len(posts))#слежу за тем что происходит
    scroll_end()
    Ответ написан
    4 комментария
  • Как спарсить все артикулы со страницы с бесконечным скроллом на Beautifulsoup + Selenium?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Скролить категорически не рекомендую! Представьте, что там +100500 страниц. И если скролить, через некоторое время закончится оперативка, и кроме парсера, зависнет еще и компьютер.

    Вместо этого, лучше к ссылке добавить параметр "?page=1" - где число - номер страницы. И в цикле увеличивать число, пока на странице не появится текст вроде - "В этой категории нет ни одного товара."
    Ответ написан
    1 комментарий