Парсинг веб-страниц с помощью Python: руководство для начинающих

Опубликовано: 2016-10-10

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

Веб-скрейпинг Python

Данные могут быть извлечены или очищены из веб-источника с использованием ряда методов. Популярные веб-сайты, такие как Google, Facebook или Twitter, предлагают API для просмотра и извлечения доступных данных в структурированном виде. Это предотвращает использование других методов, которые могут быть нежелательны для поставщика API. Однако потребность в сканировании веб-сайта возникает, когда информация не предлагается на веб-сайте. Python, язык программирования с открытым исходным кодом, часто используется для парсинга веб-страниц из-за его простой и богатой экосистемы. Он содержит библиотеку BeautifulSoup, которая выполняет эту задачу. Давайте подробнее рассмотрим парсинг веб-страниц с помощью Python.

Настройка среды Python:

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

Beautiful Soup — это удобная в использовании библиотека Python. Это один из лучших инструментов для извлечения информации с веб-страницы. Профессионалы могут сканировать информацию с веб-страниц в виде таблиц, списков или абзацев. Urllib2 — это еще одна библиотека, которую можно использовать в сочетании с библиотекой BeautifulSoup для загрузки веб-страниц. Можно добавить фильтры для извлечения определенной информации с веб-страниц. Urllib2 — это модуль Python, который может получать URL-адреса.

Для MAC OSX:

Чтобы установить библиотеки Python на MAC OSX, пользователям необходимо открыть терминал win и ввести следующие команды, по одной команде за раз:

sudoeasy_install пункт

pip установить BeautifulSoup4

пип установить lxml

Для пользователей Windows 7 и 8:

Пользователям Windows 7 и 8 необходимо сначала установить среду Python. После установки среды откройте командную строку, найдите путь к корневому каталогу C:/ и введите следующие команды:

easy_install BeautifulSoup4

easy_installlxml

После установки библиотек пришло время написать код очистки данных.

Запуск Python:

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

Python предлагает несколько других альтернатив для очистки HTML, кроме BeautifulSoup. Они включают:

  • Скрапи
  • царапина
  • Механизировать

Веб-скрапинг преобразует неструктурированные данные из кода HTML в форму структурированных данных, таких как табличные данные на листе Excel. Веб-скрапинг можно выполнять разными способами, начиная от использования Google Docs и заканчивая языками программирования. Для людей, не обладающих знаниями в области программирования или техническими компетенциями, можно получить веб-данные с помощью служб веб-скрейпинга, которые предоставляют готовые к использованию данные с веб-сайтов по вашему выбору.

HTML-теги:

Для выполнения парсинга веб-страниц пользователи должны хорошо разбираться в HTML-тегах. Может быть очень полезно знать, что HTML-ссылки определяются с помощью тега привязки, т.е. тега <a>, «<a href="https://…">Ссылка должна быть здесь </a>». Список HTML состоит из списка <ul> (неупорядоченный) и <ol> (упорядоченный). Элемент списка начинается с <li>.

Таблицы HTML определяются с помощью <Table>, строки как <tr> и столбцы делятся на данные как <td>;

  • <!DOCTYPE html>: HTML-документ начинается с объявления типа документа.
  • Основная часть HTML-документа в виде неформатированного простого текста определяется тегами <body> и </body> .
  • Заголовки в HTML определяются с помощью тегов заголовков от <h1> до <h5>.
  • Абзацы определяются с помощью тега <p> в HTML.
  • Весь документ HTML содержится между <html> и </html>

Использование BeautifulSoup в парсинге:

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

  • Первым и главным шагом является импорт необходимых библиотек:

#импортировать библиотеку, используемую для запроса веб-сайта

импортировать urllib2

#указываем url wiki="https://"

# Запросите веб-сайт и верните html в переменную «страница»

страница = urllib2.urlopen(вики)

#импортируйте функции «Прекрасный суп» для анализа данных, возвращаемых с веб-сайта.

из bs4 импортировать BeautifulSoup

#Проанализируйте html в переменной page и сохраните его в формате Beautiful Soup

суп = BeautifulSoup(страница)

  • Используйте функцию prettify для визуализации вложенной структуры HTML-страницы.
  • Работа с тегами Soup:

Soup<tag> используется для возврата содержимого между открывающим и закрывающим тегом, включая тег.

  1. В[30]:soup.title

Out[30]:<title>Список президентов Индии до 2010 г. – Википедия, бесплатная энциклопедия</title>

  1. суп.<тег>.строка: возвращает строку в пределах данного тега
  2. В [38]:soup.title.string
  3. Out[38]:u 'Список президентов Индии и Бразилии до 2010 года в Индии - Википедия, бесплатная энциклопедия'
  4. Найдите все ссылки внутри тегов <a> страницы: пометьте ссылку тегом «<a>». Итак, выберите вариант soap.a, и он должен вернуть ссылки, доступные на веб-странице. Давай сделаем это.
  5. В [40]: суп.а

Out[40]:<a id="top"></a>

  • Найдите нужную таблицу:

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

all_tables= суп.find_all('стол')

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

  1. Осмотрите элемент
  2. Скопируйте имя класса или найдите имя класса нужной таблицы из вывода последней команды.

right_table=soup.find('table', class_='Викитаблица, сортируемая простыми заголовками строк')

правая_таблица

Вот как мы можем определить правильную таблицу.

  • Извлеките информацию в DataFrame: необходимо выполнить итерацию по каждой строке (tr), а затем присвоить каждый элемент tr (td) переменной и добавить ее в список. Давайте проанализируем HTML-структуру таблицы Table. (извлечь информацию для заголовка таблицы <th>)

Чтобы получить доступ к значению каждого элемента, необходимо использовать опцию «find(text=True)» для каждого элемента. Наконец, есть данные в кадре данных.

Существуют различные другие способы сканирования данных с помощью BeautifulSoup, которые сокращают количество ручных операций по сбору данных с веб-страниц. Код, написанный в BeautifulSoup, считается более надежным, чем регулярные выражения. Обсуждаемый нами метод очистки веб-страниц использует библиотеки BeautifulSoup и urllib2 в Python. Это было краткое руководство для начинающих по использованию Python для парсинга веб-страниц.

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

Планируете получать данные из Интернета для науки о данных? Мы здесь, чтобы помочь. Дайте нам знать о ваших требованиях.