Вы можете использовать запросов и получать всю информацию в формате json. Измените значение pageSize
с 25 на 338 и получите всех участников за один запрос.
import requests
response = requests.get('https://startup-days-2019.events.startupinvest.ch/api/v2/events/3778/participants:search?pageSize=25&view=1&filter.query=&order_by=')
# to get response in text format, use response.text
participants = response.json()["participants"]
for participant in participants:
first_name = participant["user"]["first_name"]
last_name = participant["user"]["last_name"]
organisation_name = participant["organisation_name"]
print(s"name: {first_name} {last_name}, organisation: {organisation_name}")
Чтобы получить, вам нужно сначала прокрутить и собрать все href
:
from selenium.common.exceptions import StaleElementReferenceException
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
base_url = "https://startup-days-2019.events.startupinvest.ch"
driver = webdriver.Firefox()
wait = WebDriverWait(driver, 10)
driver.get(base_url + "/participants")
size = int(wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".opportunities-count-number"))).text)
participants = []
while len(participants) < size:
participant_cards = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".participants-main-container a")))
for card in participant_cards:
try:
href = card.get_attribute("href")
if href not in participants:
participants.append(href)
except StaleElementReferenceException:
pass
driver.execute_script("arguments[0].scrollIntoView();", participant_cards[len(participant_cards)-1])
for participant in participants:
driver.get(participants)