Как другой пользователь упомянул в комментариях, requests
здесь не подойдет. Но, используя Selenium, вы можете очистить содержимое страницы, используя WebDriverWait
, чтобы убедиться, что все содержимое страницы загружено, и element.text
, чтобы извлечь содержимое веб-страницы.
Следующий фрагмент кода напечатает строки пути карьеры в левой части страницы:
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# navigate to the page
driver = get_selenium_driver()
driver.get(url)
# wait for loading indicator to be hidden
WebDriverWait(driver, 10).until(EC.invisibility_of_element((By.XPATH, "//*[contains(text(), 'Loading data')]")))
# wait for content to load
career_path_elements = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.XPATH, "//div[@class='abcd']/ul/li")))
# print out career paths
for element in career_path_elements:
# get title attribute that usually contains career path text
title = element.get_attribute("title")
# sometimes career path is in span below this element
if not title:
# find the element and print its text
span_element = element.find_element_by_xpath("span[not(contains(@class, 'currentJobHead'))]")
print(span_element.text)
# print title in other cases
else:
print(title)
Это напечатает следующее:
PHP Developer
Drupal Developer
Web Developer
Full Stack Developer
Back-End Developer
Full Stack PHP Developer
IT Director
Software Development Manager
Здесь есть несколько интересных объектов. Основной из них является загрузка Javascript на этой странице - при первом открытии страницы появляется индикатор «Загрузка данных ...». Мы должны подождать EC.invisibility_of_element
для этого элемента, чтобы убедиться, что он исчез, прежде чем мы попытаемся найти какой-либо контент страницы.
После этого мы снова вызываем WebDriverWait
, но на этот раз по «Карьерному пути» элементы на правой стороне страницы. Этот WebDriverWait
вызов возвращает список элементов, хранящихся в career_path_elements
. Мы можем oop просмотреть этот список элементов, чтобы напечатать путь карьеры каждого элемента.
Каждый элемент пути карьеры содержит текст пути карьеры в атрибуте title
, поэтому мы вызываем element.get_attribute("title")
для получения этот текст. Тем не менее, существует особый случай для элемента «Текущее место работы», где текст пути карьеры содержится на span
на один уровень ниже. Мы обрабатываем случаи, когда title
пусто, вызывая element.find_element_by_xpath()
, чтобы найти span
. Это гарантирует, что мы можем напечатать каждый элемент пути карьеры на странице.