Нежное введение в извлечение данных из Интернета | Очистка с помощью 🐍

Данные есть везде. Данные в сети. Но что такое Интернет? И как извлечь из него данные?

Этот пост является первым из серии «Очистка с помощью Python 🐍», в которой я намерен объяснить и преподать от базовых до наиболее сложных концепций парсинга .

Вступление

Вы хотите собирать данные из Интернета, но не знаете, с чего начать? Вы следовали Scrapy startprojecttutorial, но ваш паук все еще не ползает по сети? Вы даже не слышали слова 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() функцию, которая автоматически извлекает HTMLtabletags и преобразует их в pd.DataFrame. Это очень эффективно и в некоторых основных случаях может быть очень полезно. Специально для сбора таблиц данных из Википедии.
  • Запросы - это элегантная и простая HTTP-библиотека для Python, созданная для людей. Что очень полезно для загрузки веб-страниц и, следовательно, для запросов API.
  • Beautiful Soup - это библиотека Python для извлечения данных из файлов HTML и XML. Он предоставляет идиоматические способы навигации, поиска и изменения дерева HTML. Это исторический парсер Python.
  • Selenium - это пакет, предназначенный для автоматизации веб-тестирования. Он открывает браузер и затем программируется для имитации человеческого поведения (щелкните, введите текст, прокрутите…). Несмотря на то, что его не следует использовать для соскоба, иногда кажется, что он приносит большую пользу.
  • Scrapy - это платформа для извлечения необходимых данных с веб-сайтов. Быстрым, простым, но расширяемым способом. Он использует асинхронные запросы, что делает его очень быстрым при сканировании, и имеет мощный встроенный анализатор. Он реализует HTTP-запросы и анализирует HTML-ответы перед их отображением.

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

Заключение

Сегодня у нас появился первый подход к парсингу веб-страниц; сначала мы разъяснили, как работает Интернет, затем мы увидели различные способы сбора данных из Интернета, с их преимуществами и недостатками. Наконец, у нас был обзор различных инструментов, которые вы можете использовать для очистки данных. Надеюсь, вам все было ясно

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

Надеюсь, вам понравилось и до скорой встречи 🤠