#python #selenium #selenium-webdriver #web-scraping #beautifulsoup
Вопрос:
Я пытаюсь очистить эту страницу в Интернете и ищу способ нажать кнопку «Загрузить больше» с помощью selenium python. Я пробовал использовать эти коды
driver.find_element(By.LINK_TEXT, "Load more").click()
driver.find_element_by_xpath('//*[@id="root"]/div/div[1]/div[1]/main/div[2]/div[1]/div/button/span').click()
driver.find_element_by_xpath('//*[@id="root"]/div/div[1]/div[1]/main/div[2]/div[1]/div/button').click()
но ни один из вышеперечисленных не работал с основным кодом,моим альтернативным решением было использование свитка, подобного этому…
def infinite(driver):
scroll_pause_time = 10
# Get scroll height
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(scroll_pause_time)
try:
driver.find_element_by_xpath('//*[@id="root"]/div/div[1]/div[1]/main/div[2]/div[1]/div/button').click()#This doesn't work
except:
print('No button')
new_height = driver.execute_script("return document.body.scrollHeight")
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL Keys.HOME)
print('yeah!')
if new_height == last_height:
# If heights are the same it will exit the function
break
last_height = new_height
Ответ №1:
Есть такое modal pop-up window
, что вы можете нажать на кнопку » Да » или » Нет » или «Чтобы X
«.
Как только это произойдет clicked
, вам придется прокрутить весь путь вниз до кнопки, и Селен сможет увидеть кнопку «Загрузить еще», в конце концов, вы сможете нажать на нее.
Код :
driver = webdriver.Chrome(driver_path)
driver.maximize_window()
wait = WebDriverWait(driver, 30)
driver.get("https://jooble.org/SearchResult?date=8amp;p=5amp;rgns=New York, NYamp;ukw=software")
try:
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[aria-label='Close']"))).click()
except:
pass
driver.execute_script("var scrollingElement = (document.scrollingElement || document.body);scrollingElement.scrollTop = scrollingElement.scrollHeight;")
wait.until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Load more']/.."))).click()
Импорт :
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC