我正在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()
非常感谢您的帮助。
答案 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