Раскройте секреты веб-скрейпинга с помощью Python и откройте для себя новейшие инструменты и методы для извлечения ценных данных из Интернета.

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

Вы когда-нибудь задавались вопросом, есть ли у вас разрешение на парсинг веб-сайта?

💡Существует файл robots.txt (в корневом каталоге домена),также известный как протокол исключения роботов, веб-стандарт, используемый веб-сайтами для обмена информацией с автоматизированными скрипты — предоставление разрешения на то, что можно и нельзя парсить. Об этом подробнее здесь".

Строительные блоки Интернета

Давайте начнем с некоторых основ.Чтобы эффективно собирать данные из Интернета, важно понимать структуру данных, из которых они создаются, что также позволяет реконструировать то, что происходит за кулисами. Это интересно. тема, а не только то, что ее составляет, но и то, как она извлекается, и организованная структура, за которой следует — взгляните на один из моих предыдущих постов, где я погружаюсь в некоторые детали. А пока позвольте мне назвать лишь несколько технологий:

  • Протокол передачи гипертекста (HTML) – это прикладной протокол, который передает ресурсы, такие как HTML-документы, между клиентом и веб-сервером.
  • Расширяемый язык разметки (XML) – это язык разметки, используемый для распространения данных в Интернете, с набором правил кодирования документов, которые легко читаются и легко обмениваются между компьютерами и документами.
  • JavaScript – это язык программирования, который используется для добавления динамических функций и обеспечения пользовательского взаимодействия внутри веб-страниц.
  • Объектная нотация JavaScript (JSON) — это формат, используемый для хранения и передачи данных с сервера на веб-страницу.
  • Каскадные таблицы стилей (CSS) описывают свойства отображения HTML-элементов и внешний вид веб-страниц.

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

Почему Python?

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

Получение содержимого

Самый простой способ получить контент из Интернета — использовать библиотеку requests. Он не только позволяет вам вызывать различные HTTP-методы (GET, POST, DELETE, …), но также позволяет вам обрабатывать запросы JSON, обрабатывать файлы cookie, кодировать и т. д.

Простой пример на Python будет выглядеть примерно так:

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

Обычно это способ, если вы хотите получить полный контент из URL-адреса, а затем отфильтровать его в коде. Но иногда вы уже хотите очистить часть определенной информации, потому что извлечение всего не только создает некоторую путаницу, но также рассматривает случай, когда создатели модифицируют веб-сайт, но вы жестко запрограммировали фильтрацию ответ в вашем скрипте, и теперь он просто больше не работает. Давайте посмотрим, как мы можем решить эту проблему в следующих разделах.

Инструменты разработчика веб-браузера (DevTools)

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

  • Идентификация элемента
  • Выбор
  • Навигация по объектной модели документа (DOM)

Вы можете открыть DevTools, нажав Ctrl + Shift + I, и вам откроется боковая вкладка в браузере. Вы можете искать информацию о сети на вкладке Сеть или HTML-код на вкладке Элементы — и многое другое. Но поскольку большинство из вас, вероятно, будут искать фрагмент кода HTML/XML/…, который реализует определенный код, вот как вы его найдете.

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

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

Скрапинг содержимого

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

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

lxml

lxml предпочтительнее других библиотек на основе XML в Python из-за его высокой скорости и эффективного управления памятью. Он также содержит различные другие функции для обработки как небольших, так и больших XML-файлов. Программисты Python используют lxml для обработки документов XML и HTML. Для получения более подробной информации о lxml и поддержке его библиотеки посетите https://lxml.de.

пикери

pyquery — это jQuery-подобная библиотека для Python, которая за кулисами использует библиотеку lxml. pyquery сокращает обработку элементов и обеспечивает более проницательный подход к написанию сценариев, который подходит для очистки и задач обхода и манипулирования на основе DOM.

💡Поскольку вам может быть интересно узнать, что jQuery — одна из самых популярных библиотек JavaScript, она маленькая, быстрая и имеет множество функций, поддерживающих DOM/HTML/CSS и многое другое.

Скрапи

Scrapy — это фреймворк для сканирования веб-страниц, написанный на Python, используемый для сканирования веб-сайтов с эффективным и минимальным кодированием. Scrapy изначально был разработан для парсинга веб-страниц; с его популярностью и развитием он также используется для извлечения данных из API.

Знаете ли вы, что в корневом каталоге домена обычно находится XML-файл, содержащий информацию, связанную с URL-адресами текущих ссылок на страницы?

💡файл sitemap.xml. Ведение карты сайта — это простой способ информировать поисковые системы о URL-адресах, содержащихся на веб-сайте, а также в случае необходимости просканировать сайты, на которые он ссылается.

Красивый суп

Beautiful Soup предоставляет полные функции, связанные с синтаксическим анализом, которые доступны также при использовании lxml. Наборы простых и удобных в использовании методов, а также свойства для работы с навигацией, поиском и синтаксическим анализом делают Beautiful Soup фаворитом среди других библиотек Python. Одной из отличительных особенностей Beautiful Soup по сравнению с другими библиотеками и парсерами является то, что его также можно использовать для анализа поврежденного HTML или файлов с неполными или отсутствующими тегами.

Вам надоело запускать скрипт Web Scraping в облаке, и вы очень хотите научиться размещать его самостоятельно?

😶‍🌫️ Взгляните на один из моих предыдущих постов о парсинге веб-страниц, где я кратко описываю полную архитектуру фермы парсинга веб-сайтов, которая включает в себя такие функции, как GitHub Actions, Docker, ArgoCD, Kubernetes и так далее.

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

Расширенные концепции

Обычно все крутится вокруг этих 5 библиотек, которые я только что кратко описал, но они также представляют собой некоторые промежуточные и продвинутые темы, которые я не упомянул, такие как Secure Web, Authentication, Cookies, Selenium и Regex — так что мне все еще есть о чем поговорить. про следующий раз :)

Спасибо за прочтение! 😎 Если вам понравилась эта статья, нажмите кнопку хлопка ниже 👏

Это много значит для меня, и это помогает другим людям увидеть историю. Скажи привет на Linkedin | Твиттер

Хотите начать читать эксклюзивные истории на Medium? Используйте эту реферальную ссылку 🔗

Если вам понравился мой пост, вы можете купить мне хот-дог 🌭

Вы инженер-энтузиаст, которому не хватает возможности составить убедительный и вдохновляющий технический контент? Наймите меня на Upwork 🛠️

Ознакомьтесь с остальными моими материалами на Teodor J. Podobnik, @dorkamotorka и подпишитесь на меня, чтобы не пропустить новые, ура!