Привет, мир! Если вы читали эту статью, значит, вы пришли к моему первому посту wohoo! На этот раз я хочу просто рассказать о удалении веб-страниц с помощью красивого супа 😆 Итак, без лишней болтовни, давайте перейдем к основному!

Так что же такое веб-скрапинг?

Представьте, что вы хотите отправить некоторую информацию с веб-сайтов пользователю через своего чат-бота. Когда пользователь вводит что-то в ваш чат-бот, например Что такое последний фильм?, Ваш чат-бот будет собирать информацию в Интернете, например Netflix, чтобы получать последние выпущенные фильмы. Допустим, он состоит из названия фильма, продолжительности фильма и жанра. Эти результаты могут быть представлены пользователю в виде карусели . Ага! на самом деле вы просто занимаетесь разборкой веб-страниц. Определение веб-скрапинга согласно википедии:

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

Зачем использовать удаление веб-страниц?

Каждый раз, когда мы собираемся что-то делать, мы должны спрашивать себя «почему»? Хорошо, причина, по которой мы должны использовать удаление веб-страниц, заключается в.

  1. Это полезно для сквозного тестирования
    Вы слышали о Selenium? Это браузер для автоматизации веб-приложений, обычно в целях тестирования, но не ограничиваясь этим. Возможно, в следующей статье мы подробнее поговорим о Selenium для удаления веб-страниц.
  2. Мы могли бы создавать наборы данных для обучения нашей модели!
    Звучит безумно? Но да! Если вы хотите создать любую из моделей машинного обучения или глубокого обучения, которым нужны данные для фазы обучения, но вы не можете их получить, потому что веб-сайты не предоставляет API (интерфейс прикладного программирования). Вы можете использовать удаление веб-страниц, чтобы получать данные автоматически, а не вручную.
  3. Деловая цель
    Начальник просит вас собрать данные с веб-сайта его конкурента. Вашей компании необходимо сравнить свои данные с данными конкурентов, чтобы получить представление о бизнесе. Затем вы можете использовать удаление веб-страниц для получения данных.

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

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

Хорошо, вот некоторые объяснения по поводу удаления веб-страниц, давайте перейдем к более практическому занятию, известному как Beautiful Soup!

Что такое красивый суп?

Ждать?! Вы имеете в виду этот «суп»?

Нет нет. Это не суп, как на изображении выше. Это одна из библиотек удаления веб-страниц в Python. С красивым супом мы можем получать данные из HTML или любого языка разметки. Beautiful Soup поможет вам получить определенный контент с веб-сайтов, очистить HTML и предоставить вам информацию. Вам понадобится Python и pip, если вы хотите освоить эти инструменты. Я предполагаю, что на вашем компьютере установлены оба этих устройства .

Если у вас еще нет Python . Вы можете установить его здесь, в документации объясняется установка Python в Linux, Mac и Windows, так что не о чем беспокоиться!. < br /> Если вы еще не установили pip , вы можете проверить этот веб-сайт, на котором объясняется, как установить pip в различных операционных системах.

Вы их установили? Хорошо, во-первых. Приходится установить красивый суп с помощью pipcommand:

pip install beautifulsoup4

Кроме того, нам нужно установить lxml which является библиотекой Python для анализа файлов HTML и XML с помощью этой команды:

pip install lxml

Когда мы работаем с веб-страницей, нам может потребоваться requests library для отправки HTTP-запроса на веб-сайты. Вы можете установить его с помощью:

pip install requests

Я бы посоветовал вам использовать virtualenv (виртуальную среду), это позволяет вам иметь разные пакеты / библиотеки для каждого, над которым вы работаете. Это похоже на то, что у вас есть локальный пакет, поэтому он не сломает глобальный пакет, что может вызвать конфликт с другими проектами. Возможно, в следующий раз мы сможем обсудить это на Medium.

В этом разделе я хочу создать простой csv файл, состоящий из названия команды и их региона со следующими деталями :

+----------------+--------------------------+
|   region       |       team name          |
+----------------+--------------------------+
| North America  | [Chaos, Demon]           | 
| South America  | [beastcoast, Infamous]   | 
| Europe         | [Alliance, Nigma]        |
| China          | [Newbee, PSG LGD]        |
| .....          | [... ,.... ,....]        |
+----------------+--------------------------+

Есть несколько способов создать csv files, но я хотел бы использовать Pandas, поскольку он уже предоставляет функцию под названием to_csv() для сохранения фрейма данных в csv. Это команда, если вы хотите установить Pandas в свою среду.

pip install pandas

Хорошо, пора написать код! В этом разделе мы удалим часть контента с этого веб-сайта, так как я любил играть в Dota и смотрел некоторые из их турниров, включая The International 😆 (не спрашивайте мой MMR😢, вы можете проверить мой последний играть на dotabuff)

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

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

Это выведет структуру HTML из liquipedia в красивой форме с помощью prettify().

Чтобы создать столбец region, мне нужно сначала удалить списки region, написав этот код.

В красивом супе есть функция с именем find_all для получения всех элементов HTML на основе параметра внутри функции. Внутри find_all функции мы передали div и class_='panel-heading', чтобы получить элемент и цикл, используя понимание списка для получения текста каждой области.

Затем мы хотим получить название команды в каждом регионе . Я сделал это, написав этот код .

find_all('div', class_='panel-body') означает получить весь текст внутри тегов. Но результат будет таким:

 Chaos Esports Club  Demon Slayers  Evil Genuises  Fighting PandaS 

С пробелом в начале и в конце текста, а также двумя пробелами между каждой командой. Чтобы справиться с этим, я делаю strip(), чтобы удалить начальные и конечные пробелы, а затем split(' ') #double spaces, чтобы разделить двойные пробелы каждой команды, что приводит к списку (я думаю, это плохой подход).

[Chaos Esports Club, Demon Slayers, Evil Genuises, Fighting PandaS]

Затем я использую цикл понимания списка, чтобы получить все команды в каждом регионе (результаты будут двумерным списком).

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

Прежде чем мы сохраним его в файлы csv, мы должны сначала создать DataFrame, я делаю это, записывая коды:

Чтобы создать DataFrame с помощью Pandas, просто вызовите класс DataFrame с словарными параметрами с key в качестве имени столбца и value в качестве значения столбца. И последнее: сохраните его в csv, используя to_csv(filename).

Это моя первая публикация, в которой рассказывается об удалении веб-страниц с помощью Beautiful Soup. Если вы хотите больше попрактиковаться с этой библиотекой, вы можете проверить документацию. Хлопайте в ладоши, если вам понравилась эта статья или вы считаете ее полезной😄

Я очень рад вашим отзывам, просто оставьте комментарии к этому сообщению, если таковые имеются.

Спасибо и увидимся на следующей встрече 🎮 (также известная как статья)!