До сих пор существуют веб-сайты без каких-либо API. Сбор данных с таких сайтов может занимать очень много времени и выполняться вручную. Я создал образцы для генератора приложений с открытыми событиями. Один из образцов, которые я создал, был для AllofHands Hawaii 2016. У этого сайта не было никакого API для простого извлечения данных.
Как узнать, использует ли веб-сайт API или нет?
Используя Google Chrome, перейдите к View → Developer → Developer Tools. Под Network →XHR найдите конечную точку API с помощью метода Hit and Trial. (XHR означает XMLHttpRequest)
Однако что делать, если на сайте не используется API? Как бы вы очищали данные в этом случае? Будете ли вы теперь вручную нажимать на каждую гиперссылку на сайте и посещать каждую страницу, чтобы получить данные, копируя и вставляя их вручную? Может ли кто-нибудь делать эту ручную работу для вас? Или, может быть, лучше, чтобы «что-то» делало эту работу за вас? Да, это селен.
SELENIUM - АВТОМАТИЗАЦИЯ ВЕБ-БРАУЗЕРА
Selenium — это инструмент, который автоматизирует задачу просмотра веб-страниц. Хотя технически он используется для целей веб-тестирования, его полезность не ограничена.
Давайте начнем с основ Selenium:
УСТАНОВКА:
- Выполните следующую команду
pip install selenium(Совет: рекомендуется использоватьvirtualenv) - 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)
Переход к различным элементам на посещенной/текущей веб-странице:
- BY ID:
WebElement element = driver.findElement(By.id(“ui_elementid”)); - ПО НАЗВАНИЮ КЛАССА:
List<WebElement> cheeses = driver.findElements(By.className(“cheese”)); - ПО ИМЯ ТЕГА:
WebElement tag = driver.findElement(By.tagName(“tag_name”)); - ПО CSS:
WebElement cs = driver.findElement(By.cssSelector(“#”)); - ПО ССЫЛКЕ:
WebElement cheese = driver.findElement(By.linkText(“blog”));. Если элемент href имеет видurlofpage?q=blog. - ПО XPATH:
List<WebElement> xp = driver.findElements(By.xpath(“//input”))
Мы также можем использовать JavaScript вместе с Selenium. Это может быть полезной веткой для того же.