Python - Нажмите, чтобы пролистать вниз, используя Selenium - PullRequest
0 голосов
/ 25 декабря 2018

Я использую Selenium в Python для извлечения списка стартапов из AngelList.Для того, чтобы собрать все стартапы, я должен нажимать кнопку «Дополнительно» в конце страницы, пока не достигну конца списка.

Проблема в том, что я не могу понять, как продолжать нажимать, пока он не достигнет конца страницы.

driver = webdriver.Chrome('C:\\Users\\Documents\\chromedriver.exe')
driver.get("https://angel.co/companies?company_types[]=Startup")
driver.find_element_by_class_name("""more""").click()

Это приводит к одному щелчку «Подробнее».Каждый щелчок загружает еще 20 запусков.

Я пробовал это, чтобы продолжать нажимать:

i = 0
while i < 20:
    driver.find_element_by_class_name("""more""").click()
    i += 1

, и это приводит к этой ошибке:

selenium.common.exceptions.StaleElementReferenceException: Message: stale 
element reference: element is not attached to the page document

Любая помощьвысоко ценится.

1 Ответ

0 голосов
/ 25 декабря 2018

когда он достигнет конца страницы, элемент <div class="more">More</div> будет удален из DOM.

Чтобы щелкнуть и загрузить дополнительный контент, подождите и проверьте, есть ли у кнопки или div.more текст More, вот пример использования WebDriverWait и отфильтрованных результатов URL

from selenium.webdriver.support.ui import WebDriverWait

driver.get('https://angel.co/companies?company_types[]=Startup&markets[]=Education&raised[min]=2830196&raised[max]=100000000&stage[]=Series+B&stage[]=Series+A')

while True:
    try:
        moreButton = WebDriverWait(driver, 10).until(
            lambda d: d.find_element_by_xpath('//div[@class="more" and text() = "More"]')
        )
        moreButton.click()
    except:
        print("scroll finished")
        break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...