Простой пример очистки текста и создания приложения Heroku.

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

Если вы здесь только из-за конечного продукта, то вот он —
Просто введите ключевые слова того, что вы хотите увидеть (например, iPhone SE), и нажмите кнопку поиска, чтобы загрузить обзоры с Flipkart.com.



Страница поиска
Скрапингcustomer-review-scraping.herokuapp.com



Почему у меня не работает приложение?

Если вы пытаетесь загрузить результаты поиска, и он не показывает желаемый результат, возможные причины должны быть такими:

  1. Вы искали действительно сложный запрос, содержащий много цифр, специальных символов или слишком много пробелов. Хотя программа написана для решения этих вопросов, иногда она просто может не работать. Попробуйте более простые текстовые ключевые слова!
  2. Идентификаторы классов извлеченных данных были изменены! Если это так, мне просто нужно обновить измененные идентификаторы классов, и все будет работать нормально. Я постараюсь сделать это, как только смогу, но до тех пор мне очень жаль, что вы не смогли попробовать приложение самостоятельно :(

Как я парсил данные

Я использовал следующее для этого варианта использования —

  1. Flask: для создания API
  2. Красивый суп: чтобы удалить данные.

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

searchString = request.form['content'].replace(" ","")
flipkart_url = "https://www.flipkart.com/search?q=" + searchString

Используя библиотеку urllib.request, я могу прочитать страницу. Затем я использовал Beautiful Soup, чтобы получить страницу, откуда я могу извлечь данные из HTML. Посмотрите мой профиль на Github (ссылка ниже), чтобы получить подробные инструкции о том, как я это сделал.

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

Я извлек ссылку на товар с помощью HTML-кода.

Списки продуктов имеют идентификатор класса "_1AtVbE col-12–12", поэтому мы используем его, чтобы получить ссылку на каждый продукт.

Как только мы окажемся на странице продукта, нам нужно специально настроить таргетинг на отзывы клиентов.

Мы снова используем Beautiful Soup для чтения этой страницы и поиска нужного ID класса, который нам нужен. Каждый блок обзора имеет идентификатор класса "_16PBlm".

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

Как я создавал веб-страницы

Страница поиска

На странице поиска используются HTML-формы для получения данных (ключевых слов), необходимых для поиска.

Страница результатов

На странице результатов используются простые табличные HTML-команды для отображения данных в табличной форме.

Обе HTML-страницы связаны с кодами CSS, чтобы они выглядели лучше. Веб-страницы настолько просты, насколько я мог, поэтому я могу легко проверить, работает ли код Python или нет.

Сохранение очищенных данных

При запуске в моей локальной системе в среде IDE, такой как PyCharm, программа создает файл .csv для каждого результата поиска и сохраняет все очищенные данные в этом файле. Это было сделано с помощью основных команд записи файлов в Python.

При подключении к MongoDB программу можно легко адаптировать для хранения очищенных данных в базе данных.

Как я развернул приложение

Приложение развертывается с помощью Heroku. Сначала она была бесплатной платформой, поэтому она определенно была хорошим выбором для моего первого развертывания. Мне просто нужно было загрузить Heroku в свою систему, войти в систему с помощью терминала, а затем выполнить шаги на панели инструментов Heroku, чтобы отправить код в развертывание.

Что я мог бы сделать лучше

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

  1. Интеграция с MongoDB. Я подключил программу к MongoDB на своем локальном компьютере при первом запуске, однако во время развертывания я удалил этот фрагмент кода. Я мог бы связать программу с MongoDB Atlas, чтобы сохранить полученные результаты для дальнейшего использования.
  2. Улучшение веб-страниц. Я не веб-разработчик и определенно не имею опыта создания веб-страниц с помощью HTML и CSS. Я пытался придерживаться самой простой веб-страницы, которую только мог, шаблоны которой я смог найти. Я планирую сделать веб-страницы немного лучше в будущем.
  3. Удалить более подробные данные. Я бы попробовал собрать более подробные данные, включая цены на продукты, параметры EMI и продавцов продуктов.
  4. Обработка изменяющихся идентификаторов классов. Поскольку идентификаторы классов извлеченных данных могут быть изменены/обновлены в любое время, программа может перестать работать всякий раз, когда это происходит. Обойти это можно с помощью Xpath объектов, которые необходимо очистить. Это можно легко сделать, если мы используем Selenium вместо красивого супа для очистки данных.

Посмотрите полный код на моем GitHub:



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