Как загрузить всю таблицу с сайта?
Здраствуйте.
Хочу запарсить сайта с таблицей в которой результаты экзаменов.
Проблема в том, что сначала в таблице только 10 столбцов, что бы загрузить всю надо нажать на кнопку Загрузить еще.
Код написал который берет этих 10 человек:
import requests
from bs4 import BeautifulSoup as BS
from selenium import webdriver
driver = webdriver.Chrome('./chromedriver.exe')
driver.get('https://vstup.osvita.ua/y2021/r14/97/833553')
element = driver.find_element_by_class_name('detail-link')
element.click()
r = requests.get('https://vstup.osvita.ua/y2021/r14/97/833553')
html = BS(r.content, 'html.parser')
trs = html.select('.rstatus6')
for el in trs:
t = el.find_all('td')
print(t[0].text)
print(t[1].text)
print(t[2].text)
print(t[3].text)
print(t[4].text)
print(t[5].text)
print('\n')
print('\n')
Но вот как дальше не могу понять. Питаюсь сделать через selenium но кнопка как то сильно спрятана.
Ну и само собой выдает ошибку:
Message: element click intercepted: Element <div class="detail-link" onclick="">...</div> is not clickable at point (509, 670). Other element would receive the click: <iframe allowfullscreen="true" allowtransparency="true" frameborder="0" hidefocus="true" marginheight="0" marginwidth="0" mozallowfullscreen="true" msallowfullscreen="true" oallowfullscreen="true" scrolling="no" tabindex="-1" webkitallowfullscreen="true" title="iframe" style="width: 100%; height: 100%; border: 0px; margin: 0px auto; top: 0px; left: 0px; position: absolute;"></iframe>
(Session info: chrome=91.0.4472.124)
Ответы (2 шт):
Выполни команду getItemsRequest() в консоли через Selenium
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
from bs4 import BeautifulSoup as BS
def browser_chrome():
options = Options()
#options.add_argument('headless')
options.add_argument('window-size=1920x935')
driver = webdriver.Chrome(executable_path=r'C:\путь\chromedriver.exe', options=options)
driver.get('https://vstup.osvita.ua/y2021/r14/97/833553')
driver.execute_script('getItemsRequest()') # Нажимает кнопку
time.sleep(5)
body = driver.execute_script('return document.getElementsByTagName("body")[0]')
html_page = body.get_attribute('innerHTML')
html = BS(html_page, 'html.parser')
trs = html.select('.rstatus6')
for el in trs:
t = el.find_all('td')
print(f'{t[0].text}|{t[1].text}|{t[2].text}')
browser_chrome()
У меня подобный вопрос. Что если нужно парсить много страниц с данного ресурса. На одних есть "Завантажити ще", а на других нет. Подскажите, как реализовать driver.execute_script('getItemsRequest()') Исходя из таких условий. Например, используя if? Заранее благодарна

