До сих пор существуют веб-сайты без каких-либо API. Сбор данных с таких сайтов может занимать очень много времени и выполняться вручную. Я создал образцы для генератора приложений с открытыми событиями. Один из образцов, которые я создал, был для AllofHands Hawaii 2016. У этого сайта не было никакого API для простого извлечения данных.

Как узнать, использует ли веб-сайт API или нет?

Используя Google Chrome, перейдите к View → Developer → Developer Tools. Под Network →XHR найдите конечную точку API с помощью метода Hit and Trial. (XHR означает XMLHttpRequest)

Однако что делать, если на сайте не используется API? Как бы вы очищали данные в этом случае? Будете ли вы теперь вручную нажимать на каждую гиперссылку на сайте и посещать каждую страницу, чтобы получить данные, копируя и вставляя их вручную? Может ли кто-нибудь делать эту ручную работу для вас? Или, может быть, лучше, чтобы «что-то» делало эту работу за вас? Да, это селен.

SELENIUM - АВТОМАТИЗАЦИЯ ВЕБ-БРАУЗЕРА

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

Давайте начнем с основ Selenium:

УСТАНОВКА:

  1. Выполните следующую команду pip install selenium (Совет: рекомендуется использовать virtualenv)
  2. Selenium требует запуска драйверов. Разные браузеры используют разные драйвера. Выберите подходящий драйвер для вашего браузера. некоторые распространенные драйверы показаны ниже (Источник)-

Chrome: https://sites.google.com/a/chromium.org/chromedriver/download

Edge: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

Firefox: https://github.com/mozilla/geckodriver/releases

Safari: https://webkit.org/blog/6900/webdriver-support-in-safari-10/

ОСНОВНЫЕ ФУНКЦИОНАЛЬНЫЕ ВОЗМОЖНОСТИ – SELENIUM:

Посетите страницу (с помощью get()): driver.get(urlofpage)

Переход к различным элементам на посещенной/текущей веб-странице:

  1. BY ID: WebElement element = driver.findElement(By.id(“ui_elementid”));
  2. ПО НАЗВАНИЮ КЛАССА: List<WebElement> cheeses = driver.findElements(By.className(“cheese”));
  3. ПО ИМЯ ТЕГА: WebElement tag = driver.findElement(By.tagName(“tag_name”));
  4. ПО CSS: WebElement cs = driver.findElement(By.cssSelector(“#”));
  5. ПО ССЫЛКЕ: WebElement cheese = driver.findElement(By.linkText(“blog”)); . Если элемент href имеет вид urlofpage?q=blog.
  6. ПО XPATH: List<WebElement> xp = driver.findElements(By.xpath(“//input”))

Мы также можем использовать JavaScript вместе с Selenium. Это может быть полезной веткой для того же.