selenium не отдает часть html от страницы
собираю информацию с сайта одного института, url ниже, и хочу взять ссылки сотрудников и их имена, driver подгружает эту информацию её видно в браузере, но html который берется то есть page_source в нём нет этой информации, в чём может быть дело?
from selenium import webdriver
from bs4 import BeautifulSoup
url = 'https://kpfu.ru/computing-technology/struktura/kafedry/kafedra-prikladnoj-matematiki/kafedra-prikladnoj-matematiki-sotrudniki'
driver = webdriver.Firefox(executable_path=constants.gecko_path)
driver.get(url)
html = driver.page_source
def gather_employees_links(html):
soup = BeautifulSoup(html, 'lxml')
spans = soup.find_all('span', class_='fio')
a_tags = [span.find('a') for span in spans]
employees = {a.text: a.get('href') for a in a_tags}
return employees
print(gather_employees_links(html))
Ответы (1 шт):
Автор решения: Rolles
→ Ссылка
Вариант решения с webdriver, но это также можно реализовать через requests.
Import
import time
from selenium import webdriver
Code
driver.get('https://shelly.kpfu.ru/e-ksu/portal_employee.searchscript?p_'
'search=1.1.2.09.2.01.2.1&p_noofficename=1&p_order=1&')
time.sleep(3)
xpath = "//td/span[@class='fio' and 1]/a[1]"
elements = driver.find_elements_by_xpath(xpath)
names = []
for element in elements:
names.append(element.text)
url = []
for i in range(1, 25):
try:
xpath = f"//tr[{i}]/td[@class='li_spec' and 1]/span[@class='fio' and 1]/a[1]"
element =
driver.find_element_by_xpath(xpath).get_attribute('href')
url.append(element)
except:
continue
print(names)
print(url)
Не забудьте создать объект драйвера.
Второй вариант через requests
Import
import requests
from lxml import html
Code
url = 'https://shelly.kpfu.ru/e-ksu/portal_employee.searchscript?p_search=1.1.2.09.2.01.2.1&p_noofficename=1&p_order=1&'
response = requests.get(url)
tree = html.fromstring(response.content)
names = []
elements = tree.xpath("//td/span[@class='fio' and 1]/a[1]")
for element in elements:
names.append(element.text)
url = []
for i in range(1, 25):
try:
xpath = f"//tr[{i}]/td[@class='li_spec' and 1]/span[@class='fio' and 1]/a[1]/@href"
element = tree.xpath(xpath)
url.append(element[0])
except:
continue
print(names)
print(url)