Нежное введение в извлечение данных из Интернета | Очистка с помощью 🐍
Данные есть везде. Данные в сети. Но что такое Интернет? И как извлечь из него данные?
Этот пост является первым из серии «Очистка с помощью Python 🐍», в которой я намерен объяснить и преподать от базовых до наиболее сложных концепций парсинга .
Вступление
Вы хотите собирать данные из Интернета, но не знаете, с чего начать? Вы следовали Scrapy startproject
tutorial, но ваш паук все еще не ползает по сети? Вы даже не слышали слова crawling
? Отлично, эта серия статей для вас: вы собираетесь открыть для себя удивительный мир соскабливания!
- Сегодня, в части 1, мы познакомимся с основными принципами парсинга в Интернете.
- Часть 2 будет объяснением того, как программно извлекать данные с одной веб-страницы.
- Часть 3 будет введением в Scrapy и будет знакомство с тем, как запустить проект в этой замечательной среде Python.
- Часть 4 будет примером использования на реальном веб-сайте. Что-то вроде нуля для героя, собирающего данные о товарах с одной из крупнейших мировых платформ.
Как работает Интернет?
Вернемся к основам с некоторыми базовыми определениями из Википедии:
- Интернет (что означает
Interconnected Network
) - это глобальная система взаимосвязанных компьютерных сетей, которая использует набор Интернет-протоколов (TCP / IP) для связи между сетями и устройствами. - Всемирная паутина (www), широко известная как Интернет, представляет собой информационную систему, в которой документы и другие веб-ресурсы идентифицируются по URL-адресам (унифицированные указатели ресурсов) и доступны через Интернет.
- Веб-браузер - это программное приложение для доступа к данным во всемирной паутине. Когда пользователь запрашивает веб-страницу с определенного веб-сайта, веб-браузер получает необходимое содержимое с веб-сервера, а затем отображает страницу на устройстве пользователя.
Что тогда происходит, когда вы хотите просмотреть веб-страницу? Допустим, вы хотите прочитать эту статью. Вы включаете свой компьютер. Вы открываете Chrome, Firefox, Safari или любой веб-браузер. Вы пишете URL-адрес страницы в текстовом поле в верхней части вашего любимого браузера. Нажимаешь ввод. И тут происходит волшебство. Ваш браузер связывается с первым компьютером, чтобы узнать, где он может найти веб-сайт medium.com. Этот первый компьютер преобразует доменное имя medium.com в IP-адрес и возвращает этот IP-адрес вашему браузеру (это называется разрешением DNS). . Теперь ваш браузер связывается со средним сервером по его IP-адресу через Интернет-протокол. И он спрашивает его, веб-страницу статьи, которую вы ищете. Сервер размещает веб-сайт и может создавать нужную веб-страницу. Затем он отправляет файл HTML обратно в ваш браузер. Ваш браузер интерпретирует полученный файл и отображает веб-страницу. Теперь вы можете наслаждаться тем, что хотите прочитать 😃
Как уже упоминалось, сервер передает HTML-страницу вашему браузеру. Но что такое HTML?
- Это означает язык разметки гипертекста.
- Это язык, используемый для создания и представления содержимого веб-страницы и ее структуры. Другие технологии используются с HTML для описания представления страницы (CSS) и / или ее интерактивных функций (JavaScript).
- Он работает через «теги», которые вставляются в обычный текст. Каждый из этих тегов указывает значение определенной части текста на сайте.
Как вы могли догадаться, это очень важная вещь для понимания и реализации очистки. Вскоре мы получим более глубокое представление о том, что такое HTML, как он структурирован и как использовать его для извлечения данных 😉
Веб-парсинг, что это значит?
Определение
Некоторым из вас это может показаться очевидным, но во введении в парсинг веб-страниц можно приветствовать определение этого термина. Итак, я хотел бы упомянуть:
«Веб-скрейпинг - это искусство сбора данных из Интернета»
И да, считаю это искусством 🎨! Действительно похоже на другой алгоритм. Но правда в том, что каждая веб-страница уникальна, каждая веб-страница была построена с использованием разных технологий, у каждого веб-сайта может быть своя собственная стратегия защиты от соскабливания; и то, что вы хотите сделать, как скребок, - это перепроектировать все усилия, предпринятые для преобразования необработанных данных в красивую веб-страницу и вернуть их в виде необработанных данных 😈! А для этого вам придется проявлять новаторский подход и применять разные методологии для каждого нового веб-сайта.
Что, для наиболее сомнительного из вас, соответствует определению искусства:
«Искусство - это выражение или применение творческих способностей и воображения человека»
Иногда, потратив часы или дни на подготовку парсинга, когда вы, наконец, запускаете его и видите, что все данные хранятся в вашей базе данных, это определенно кажется волшебством.
Но вернемся к нашему прагматическому подходу и оставим философию на потом.
Сбор данных - дальнейшие действия
Итак, мы говорим о сборе данных. Обычно есть три способа получить данные:
- Из базы данных с использованием SQL или других языков запросов. Но даже если это можно сделать с помощью облачных сервисов, таких как Amazon S3 или SQL Azure, это не совсем соответствует второй части определения, которая называется «Из Интернета».
- Использование API-интерфейсов, которые являются интерфейсом программирования для программирования и представляют собой услуги, предоставляемые одним веб-сайтом для упрощения предоставления некоторых своих данных.
- Использование парсинга, что означает анализ необработанных страниц, отправленных с интернет-серверов, и извлечение данных из их содержания.
Давайте узнаем больше об этих двух последних способах сбора данных.
Краткий обзор API
API доступен точно так же, как веб-страница. Это означает, что вы вводите URL-адрес в своем браузере и вместо классической веб-страницы HTML вы получаете структурированные данные, подобные словарю. Когда дело доходит до API, следует помнить о нескольких вещах:
- Для доступа к данным требуется очень мало строк кода.
- Он возвращает структурированный вывод; который легко конвертируется в базу данных
NB: Я удалил часть полученной шутки в файле json (в основном, из-за размера), но действительно, связанный с предыдущим кодом, на выходе было 10 шуток.
- Это услуга, предоставляемая веб-сайтом, но только на основе доброй воли владельца веб-сайта. Никто не обязан предоставлять такую услугу, и, конечно же, не на всех сайтах они есть.
Как правило, веб-сайты, предоставляющие API, также предоставляют краткую документацию для описания данных, которые они могут предложить. В нем объясняются все способы связи с сервером для сбора данных, как эти данные будут выглядеть, как они будут структурированы.
Веб-сайты, предоставляющие API, имеют полный контроль над процессом и отправляемыми данными. Они точно знают, сколько звонков они получили с каждой машины, запрашивающей данные. Иногда вам может потребоваться аутентификация, чтобы использовать API; для этого вам часто приходится регистрироваться на сайте в качестве разработчика и запрашивать токен. Позже при вызове URL вам нужно будет отправить секретный токен в параметрах (см. Пример ниже). Он позволяет контролировать точное количество данных, которые вы запрашивали, и может привести к ограничению (например, максимум 100 запросов API в день) или планам оплаты (например, 1000 бесплатных запросов, а затем 50 центов за каждые 20 запросов).
Типичные веб-сайты с API-интерфейсами - это веб-сайты, содержащие много данных. Среди них вы найдете социальные сети (Facebook, Instagram, Twitter,…), финансовые сайты (Bloomberg, Yahoo Finance, Binance,…) или погодные сайты (OpenWeatherMap, AccuWeather,…).
Шаги парсинга веб-страниц
Когда дело доходит до настоящего веб-скрейпинга, идея состоит в том, чтобы собрать HTML-страницу, отправленную с сервера, и проанализировать их как есть, без использования браузера для их отображения. Тогда как эффективный процесс очистка представляет собой сумму двух действий:
- Парсинг: это факт извлечения данных (текста, ссылки, изображения и т. д.) с веб-страницы путем анализа ее содержимого HTML.
- Сканирование: это факт, что между страницами нужно переходить по ссылкам одна за другой.
Например, если вы хотите получить информацию о продуктах Amazon и компьютерах, вы должны искать «компьютеры» на главной панели поиска. Затем вам понадобится скребок, чтобы найти все ссылки элемента на первой странице результатов. А потом :
- Переход по всем ссылкам на элементы (сканирование)
- Анализируйте содержание страницы каждого товара и извлекайте такую информацию, как название, цена, продавец,… (анализ)
- Найдите ссылку на следующую страницу элемента (синтаксический анализ)
- Перейдите по ссылке на следующую страницу (сканирование), чтобы повторить процесс и, наконец, получить всю информацию обо всех существующих продуктах, связанных с компьютерами.
Главное преимущество: если использовать средства, любой веб-сайт можно «очистить». С помощью этих технологий каждая часть данных в Интернете может храниться в базе данных.
Главный недостаток: это гораздо более сложный процесс, и взлом определенного веб-сайта может занять очень много времени.
По сути, именно об этом и пойдет речь в следующих статьях этой серии. Теперь перейдем к инструментам Python для парсинга веб-страниц.
Инструменты Python для сбора данных из Интернета
Одним из самых больших преимуществ Python является количество доступных пакетов с открытым исходным кодом (около 113 тыс. Пакетов по состоянию на 2019 год). Вот некоторые из самых известных, которые можно использовать в контексте парсинга.
- Pandas на самом деле не является пакетом для очистки (манипулирования данными), но они выпустили
pd.read_html()
функцию, которая автоматически извлекает HTMLtable
tags и преобразует их вpd.DataFrame
. Это очень эффективно и в некоторых основных случаях может быть очень полезно. Специально для сбора таблиц данных из Википедии. - Запросы - это элегантная и простая HTTP-библиотека для Python, созданная для людей. Что очень полезно для загрузки веб-страниц и, следовательно, для запросов API.
- Beautiful Soup - это библиотека Python для извлечения данных из файлов HTML и XML. Он предоставляет идиоматические способы навигации, поиска и изменения дерева HTML. Это исторический парсер Python.
- Selenium - это пакет, предназначенный для автоматизации веб-тестирования. Он открывает браузер и затем программируется для имитации человеческого поведения (щелкните, введите текст, прокрутите…). Несмотря на то, что его не следует использовать для соскоба, иногда кажется, что он приносит большую пользу.
- Scrapy - это платформа для извлечения необходимых данных с веб-сайтов. Быстрым, простым, но расширяемым способом. Он использует асинхронные запросы, что делает его очень быстрым при сканировании, и имеет мощный встроенный анализатор. Он реализует HTTP-запросы и анализирует HTML-ответы перед их отображением.
У каждого из них есть свои плюсы и минусы, и они не используются в одном контексте, но на сегодняшний день мне больше всего нравится Scrapy за его простоту и мощь 😃
Заключение
Сегодня у нас появился первый подход к парсингу веб-страниц; сначала мы разъяснили, как работает Интернет, затем мы увидели различные способы сбора данных из Интернета, с их преимуществами и недостатками. Наконец, у нас был обзор различных инструментов, которые вы можете использовать для очистки данных. Надеюсь, вам все было ясно
В следующий раз мы получим больше практических занятий, откроем для себя селекторы XPath и CSS, которые являются мощными методами для начала синтаксического анализа содержимого Html.
Надеюсь, вам понравилось и до скорой встречи 🤠