Подготовка
Необходимо:
- скачать требуемый вэбдрайвер (webdriver) браузера (поддерживаемого) в зависимости от вашей OS для управления им с помощью Selenium https://selenium-python.readthedocs.io/installation.html#drivers
Распаковать соответствующий файл в папку:
— для Windows:
C:/WebDriver\bin\phantomjs.exe
— для Linux:
/opt/WebDriver/bin/phantomjs
В пример я использовал вэбдрайвер PhantomJS (хотя он не рекомендуется для использования), так как не он показывает окно с запускаемой программой - Для того, чтобы воспользоваться вэбдрайвером нужно установить значение системной перменной Path:
— для Windows в командной строке (или в ручном режиме) :
setx /m path «%path%;C:\WebDriver\bin\»
— для Linux ввести в Терминале:
export PATH=$PATH:/opt/WebDriver/bin >> ~/.profile
Чтобы проверить получилось ли установить path введите в Теримнале команду:
phantomjs (chromedriver, если выбрали Chrome) Теримнал покажет готовность получить команды от вас для драйвера. Чтобы выйти из режима нажимте Ctrl+C . - Установить пакет Selenium командой в Терминале (для Windows в Терминале приложения для разработки или тоже в Терминале для Linux):
pip install selenium
Исходный код
# ref
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
#инициализация
driver = webdriver.PhantomJS()
# переход по ссылке
driver.get(href)
try:
# ожидаем появления на странице элемента с аттрибутом "class" со значением "item-address__string"
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CLASS_NAME, "item-address__string"))
)
# находим нужный элемент
elem = driver.find_element_by_class_name("item-address__string")
# и получаем его текст
full_address = elem.text
print('full_address = ' + full_address)
except BaseException as ex:
print('Error load avito page. Error = ' + format(ex))
# скрин окна барузера (как оно выглядело в момент ошибки)
driver.save_screenshot('screenshot.png')
finally:
# обязательно выгружаем из памяти
driver.quit()