CoderCastrov logo
CoderCastrov
Парсер веб-сайтов

Что такое парсинг веб-страниц и как это работает? — Часть 1

Что такое парсинг веб-страниц и как это работает? — Часть 1
просмотров
5 мин чтение
#Парсер веб-сайтов

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

Что такое парсинг веб-страниц

Представьте себя. Вы сидите в интернете часами (может быть и нет), можете сохранять вдохновляющие картинки на Pinterest, или искать ответ на вопрос на StackOverflow и копировать кусок кода в свой проект. Возможности бесконечны, но главное, что вы собираете полезную информацию и сохраняете ее где-то.

Если вы делаете это, значит, вы парсер. Не волнуйтесь, это не плохо (хотя в некотором смысле и плохо).

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

Парсинг веб-страниц - это именно о парсерах. Например, вы хотите скопировать все смешные мемы с котами с Pinterest в свою папку. У вас есть два варианта:

Первый вариант - зайти на Pinterest в веб-браузере, выполнить поиск "смешные мемы с котами" и кликнуть на каждое изображение, чтобы скопировать его на компьютер, прокрутить вниз и повторить эти два шага, вероятно, 1000-2000 раз.

Это действительно трудоемко и скучно. Но подумайте о компьютере. У компьютеров нет времени и компьютеры не скучают. Вы можете сказать своему компьютеру "пойди и найди мне смешные мемы с котами на Pinterest".

Но как мы это скажем?

Как парсить веб?

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

В этой серии мы будем использовать Python, потому что он прост и легко писать. Но для инструмента у нас есть два варианта.

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

Давайте создадим наш первый парсер

Предполагаю, что у вас уже установлен Python, если у вас нет установки Python, вы можете легко установить Python на официальном веб-сайте Python.

Для этого небольшого проекта мы собираемся использовать привязку Selenium для Python.

Selenium автоматизирует веб-браузер. Например, если вы скажете ему перейти на "google.com", он введет google.com в адресную строку и перейдет на указанный вами веб-сайт. Но, как вы можете видеть, нам нужно установить веб-браузер для этого. Вы можете спросить: "У меня уже есть веб-браузер, зачем мне устанавливать еще один?".

Вы правы, но подумайте об этом. Вы создали парсер с использованием Chrome и хотите продать его кому-то, у кого нет Chrome. Попросить их установить Chrome - это не то, что мы хотим. Поэтому нам нужно установить его где-то в папке нашего кода и отправить наш парсер с этой папкой. Таким образом, клиенту не нужно устанавливать дополнительное программное обеспечение.

У нас есть два варианта браузера. Chrome или Firefox. В этой серии я установлю браузер Chrome. Теперь давайте перейдем на веб-сайт ChromeDriver и установим его.

После открытия веб-сайта у вас есть два варианта. Бета-версия или Стабильная версия. Я установлю стабильную версию. Поэтому я нажал "Latest Stable Release".

Веб-сайт Chrome Driver

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

Версии Chrome Driver для разных операционных систем.

После распаковки файла вы должны увидеть исполняемый файл. Этот файл должен находиться внутри вашей папки с кодом.

Установка Selenium действительно проста, просто откройте командную строку (или терминал) и введите;

pip install selenium

Это установит Selenium на ваш компьютер. Но это еще не все.

Теперь откройте свой любимый текстовый редактор (мой - Visual Studio Code) и создайте новый файл с именем main.py в той же директории, что и ваш драйвер.

На этом этапе ваша папка должна выглядеть так.

Структура папки, необходимая для этого проекта.

Я использую Visual Studio Code, поэтому мой полный редактор выглядит так прямо сейчас.

Экран редактора Visual Studio Code (увеличенный)

Теперь давайте напишем некоторый код.

Первое, что нам нужно сделать, это инициализировать Selenium.

from selenium import webdriver
from selenium.webdriver.common.keys import Keysdriver = webdriver.Chrome("./chromedriver.exe")

Этот блок кода импортирует webdriver из библиотеки selenium и создает новый драйвер Chrome с ./chromedriver.exe. Вторая строка кода импортирует Keys, вы увидите, зачем нам это нужно.

Если вы запустите этот скрипт Python, он создаст пустое окно Chrome и завершит программу.

Наша цель - автоматизировать это пустое окно Chrome, чтобы оно выполняло задачи за нас.

Для простоты мы перейдем на Google.com и выполним поиск "смешные мемы с кошками". Для этого нам нужно указать нашему driver перейти на домашнюю страницу Google, найти элемент поля поиска, ввести текст в поле поиска и нажать Enter, когда фокус находится в поле поиска.

Код, который я написал, выглядит так.

driver.get("https://www.google.com")search_box = driver.find_element_by_name("q")search_box.send_keys("смешные мемы с кошками")search_box.send_keys(Keys.RETURN)

Первая строка в этом блоке кода говорит браузеру перейти на этот веб-сайт.

search_box = driver.find_element_by_name("q") находит элемент с атрибутом name "q". Как мы знаем, что атрибут name поля поиска - "q"? Если вы откроете Google в своем веб-браузере и нажмете F12 или щелкнете правой кнопкой мыши по полю поиска и выберете Просмотреть код элемента, инструменты разработчика покажут вам HTML веб-сайта.

Инструменты разработчика Chrome выделяют HTML поля поиска

Если вы внимательно посмотрите на элемент <input>, вы увидите атрибут name="q". Вот то, что мы пытаемся получить в коде.

search_box.send_keys("смешные мемы с кошками") вводит текст "смешные мемы с кошками" в поле поиска.

search_box.send_keys(Keys.RETURN) имитирует нажатие клавиши Enter на клавиатуре.

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

Мы сделали это. Но где мемы с кошками? Мы еще не сохранили мемы с кошками. Для простоты давайте сделаем скриншот того, что мы видим.

driver.get_screenshot_as_file("screenshot.png")

Когда мы вводим эту команду в конце нашего скрипта main.py, он сделает скриншот веб-страницы и сохранит его как screenshot.png.

Скриншот, сделанный Selenium

Этот скриншот - то, что наш парсер сохраняет в папке.

Как видите, мы создали действительно простой парсер. На самом деле это не очень полезно, потому что мы просто делаем скриншот результатов поиска.

Весь код, который я написал в этой статье, находится здесь.

Если вы дочитали до этого места, большое спасибо.

Часть 2 этой серии находится здесь:

Давайте проведем парсинг веб-страницы (с помощью Selenium) — Часть 2

В моей предыдущей статье я объяснил, что такое парсер и создал очень простой парсер (на самом деле, не парсер). В...

batin.medium.com

Увидимся в следующих статьях.

До скорой встречи. Ура.