Веб-скрапинг - это термин, обозначающий получение данных с веб-страниц и их устранение, чтобы вам не приходилось двигать пальцем!

Получите данные, а затем обработайте их любым удобным для вас способом.

Вот почему сегодня я хочу показать вам некоторые из основных функций, которые может предложить Selenium, библиотека для веб-парсинга.

Я уже писал статьи о Selenium и Web Scraping и раньше, поэтому, прежде чем вы начнете с них, я бы рекомендовал вам прочитать эту статью Все о Web Scraping из-за процесса настройки. А если вы уже более продвинуты в веб-парсинге, попробуйте мои продвинутые сценарии, такие как Как сэкономить деньги с помощью Python и Как создать инструмент анализа с помощью Python ».

Давайте сразу же приступим к делу!

получать()

Я уже писал об этом раньше, но функция get имеет решающее значение, и вы ничего не сможете сделать без нее.

Команда get запускает новый браузер и открывает указанный URL в вашем Webdriver. Он просто принимает строку как указанный вами URL и открывает ее для целей тестирования.

Если вы используете Selenium IDE, это похоже на команду open.

Пример:

driver.get(“https://google.com");

«Драйвер» - это ваш Webdriver, на котором вы собираетесь выполнять все действия, и он выглядит так после выполнения приведенной выше команды:

find_element ()

Эта функция очень важна, когда вы хотите получить доступ к элементам на странице. Допустим, мы хотим получить доступ к кнопке «Поиск в Google», чтобы выполнить поиск.

Есть много способов получить доступ к элементам, но я предпочитаю найти XPath элемента. XPath - это окончательное расположение элемента на веб-странице.

Нажав F12, вы проверите страницу и получите справочную информацию о странице, на которой вы находитесь.

Щелкнув инструмент выделения, вы сможете выбирать элементы.

Найдя кнопку, щелкните справа в отмеченном синим цветом разделе и скопируйте элемент «Full Xpath».

self.driver.find_element_by_xpath('/html/body/div/div[4]/form/div[2]/div[1]/div[3]/center/input[1]')

Это полная команда для поиска конкретного элемента. Я предпочитаю полный XPath обычному XPath, потому что обычный XPath можно изменить, если элемент в новом сеансе изменится, а затем в следующий раз, когда вы выполните свой сценарий, он не сработает.

Обзор других функций find_element. (Также есть find_element s)

send_keys ()

Функция Send_keys используется для ввода текста в поле, которое вы выбрали с помощью функции find_element.

Предположим, мы хотим ввести «тарелку» в Google, поэтому мы используем функцию send_keys.

google_tray = self.driver.find_element_by_xpath('/html/body/div/div[4]/form/div[2]/div[1]/div[1]/div/div[2]/input')google_tray.send_keys("plate")
google_search = self.driver.find_element_by_xpath('/html/body/div/div[4]/form/div[2]/div[1]/div[3]/center/input[1]')google_search.click()

Я сохранил элементы в их соответствующих переменных, а затем выполнил над ними функции для большей ясности.

В итоге вы получите следующее:

нажмите ()

Эта функция использует найденный элемент и выполняет «щелчок» по нему. Все просто.

Это пример кода для нажатия кнопки «Поиск в Google».

google_search = self.driver.find_element_by_xpath('/html/body/div/div[4]/form/div[2]/div[1]/div[3]/center/input[1]')
google_search.click()

getClass ()

Эта команда используется для получения объекта Class, который представляет класс среды выполнения этого объекта. Это означает, что вы выполняете эту функцию, чтобы получить класс определенного элемента.

driver.getClass()

current_url ()

Когда вы уже находитесь на определенной странице с помощью этой команды, вы можете получить URL-адрес, по которому вы находитесь.

Для этой команды не требуются параметры, и она возвращает строку.

driver.current_url()

getPageSource ()

С помощью этой команды вы сможете получить Источник страницы.

Для этой команды не требуются параметры, и она возвращает строку.

driver.getPageSource()

Эту команду можно комбинировать с другими командами, такими как contains (), чтобы проверить, существует ли эта строка под этим фильтром.

driver.getPageSource().contains("Example");

В этом случае это будет логическое значение, то есть либо True, либо False.

getTitle ()

Получите заголовок веб-сайта, на котором вы сейчас находитесь.

Для этой команды не требуются параметры, и она возвращает строку. Если заголовок не найден, будет возвращено значение null.

driver.getTitle()

getText ()

С помощью этой команды вы получите текстовую часть веб-элемента.

Для этой команды не требуются параметры, и она возвращает строку.

driver.findElement(By.id("Price")).getText()

getAttribute ()

С помощью этой команды вы получите атрибут веб-элемента.

Мы передаем единственный строковый параметр, который должен быть атрибутом, который мы хотим знать, и возвращает строковое значение.

driver.findElement(By.id("Price")).getAttribute("val");

getWindowHandle ()

Эта команда используется, когда нам нужно обрабатывать несколько окон.

Команда помогает нам переключиться на новое открытое окно и выполняет действия в новом окне.

Вы также можете вернуться к предыдущему окну, если он / она пожелает.

String winHandleBefore = driver.getWindowHandle()
driver.switchTo().window(winHandleBefore)

getWindowHandles ()

Эта команда похожа на getWindowHandles (), но основное отличие состоит в том, что здесь мы имеем дело с несколькими окнами. Так что больше двух.

driver.getWindowHandles()

linkText ()

Эта команда используется для поиска элементов на странице на основе гиперссылок на странице и текста, из которого она состоит.

Допустим, мы хотим найти первую ссылку из поиска Google.

driver.findElement(By.linkText(“Car - Wikipedia”))

Есть и другой вариант поиска по этой ссылке:

partialLinkText ()

Вместо того, чтобы вводить всю строку, которую вы ищете, вы также можете выполнить поиск по частям или подстрокам на странице.

driver.findElement(By.partialLinkText(“BMW”))

Эта команда найдет первую ссылку из Главных новостей в Google.

Разместить()

После ввода текста в поля формы вы можете использовать функцию отправки, чтобы щелкнуть эту кнопку и завершить форму.

driver.findElement(By.<em>id</em>("submit")).submit();

близко()

Этот метод закрывает текущее окно, над которым работает пользователь.

Команда не требует никаких параметров и не возвращает никакого значения.

driver.close()

покидать()

Это может показаться очень похожим на команду закрытия, но главное отличие в том, что она закрывает все окна, которые пользователь держит открытыми в данный момент.

Команда не требует никаких параметров и не возвращает никакого значения.

driver.quit()

включен()

Если вы хотите проверить, включен ли элемент в веб-драйвере.

Сначала нужно найти элемент, а затем проверить его.

Он имеет возвращаемое значение boolean, поэтому либо True, либо False.

driver.findElement(By.id("Price")).isEnabled()

размер()

С помощью этой функции вы можете получить размер выбранного веб-элемента.

driver.findElements(By.id("Price")).size()

Он возвращает размер элемента, а результат выглядит так:

{'width': 77, 'height': 22}

спать()

Эта функция используется для приостановки потока выполнения на определенное количество секунд.

Например, вы вводите учетные данные для входа, и перед загрузкой следующей страницы происходит задержка по времени. Вот почему мы используем сон, чтобы преодолеть время загрузки.

Эта функция в целом полезна, и она не из Selenium, но есть встроенные функции для Selenium.

sleep(1)

Это приостановит выполнение на 1 секунду.

pageLoadTimeout ()

С функцией сна вы должны в основном угадывать время загрузки, которое вы хотите преодолеть, но с помощью pageLoadTimeout () вы можете установить его конкретным.

driver.manage().timeouts().pageLoadTimeout(3, SECONDS);

Эта команда будет ждать загрузки страницы в течение 3 секунд.

неявноWait ()

Это еще одна итерация тех функций сна / ожидания, которые помогут вам достичь идеальной многопоточности.

Чтобы избежать возникновения ошибок и исключений, мы добавляем команду в течение определенного времени, прежде чем размещать элемент на странице.

driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);

Подождите 3 секунды перед выполнением следующей команды.

навигация () + вперед () + назад ()

Они объединяются, чтобы переключаться между URL-адресами и перемещаться вперед и назад по вашему желанию.

Итак, вы хотите открыть другую страницу, но вместо использования get () вы хотите использовать навигацию здесь и легко перемещаться между этими страницами.

driver.navigate().to("https://www.facebook.com");
driver.navigate().back();
driver.navigate().forward();

Последние слова

Как упоминалось ранее, я не в первый раз пишу о Selenium и веб-парсинге в целом. Есть еще много функций, которые я хотел бы охватить, и многие другие будут в будущем. Надеюсь, вам понравился этот урок, и, чтобы не отставать, подписывайтесь на меня, чтобы узнать больше!

Спасибо за внимание!