Python-单击以使用Selenium滚动到底部

时间:2018-12-24 23:51:34

标签: python selenium webdriver

我正在Python中使用Selenium来从AngelList中提取启动列表。为了收集所有初创公司,我必须单击页面末尾的“更多”按钮,直到到达列表末尾。

问题是我无法弄清楚如何继续单击直到到达页面末尾。

NAReplace = {'NA': 0}

trainingData.LotFrontage = [NAReplace[item] for item in trainingData.LotFrontage ]

这将导致单击“更多”。每次点击会加载20个以上的初创公司。

我尝试过此操作以保持点击率:

    trainingData.LotFrontage = [NAReplace[item] for item in trainingData.LotFrontage ]
KeyError: '65'

并导致此错误:

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()

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

到达页面末尾时,元素<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