Введение в веб-скрейпинг с помощью R

1656513740 vvedenie v veb skrejping s pomoshhyu r

автора Hiren Patel

Af0kRXzV7wRfGqowegD-Km0kBflqa80UI6IJ

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

Поэтому конкурентоспособное ценообразование стало важнейшей частью бизнес-стратегии.

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

Итак, мониторинг цен стал важной частью процесса ведения бизнеса электронной коммерции.

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

3 лучших способа получить данные, необходимые для сравнения цен

1. Потоки от продавцов

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

Эти компании внедряют API или используют FTP для предоставления данных. Как правило, реферальная комиссия – это то, что делает сайт сравнения цен финансово жизнеспособным.

2. Каналы продуктов посторонних API

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

3. Web Scraping

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

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

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

Периодически извлекая данные из Amazon, вы можете отслеживать рыночные тенденции ценообразования и соответствующим образом устанавливать цены.

Содержание

  1. Веб-скреб для сравнения цен
  2. Веб-скрейпинг в R
  3. Реализация
  4. Конечная заметка

1. Веб-скреб для сравнения цен

Как говорит мудрость рынка, цена – это все. Клиенты принимают решение о покупке на основе цены. Они основывают свое понимание качества продукта на цене. Короче говоря, цена – это то, что двигает клиентами, а следовательно, и рынком.

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

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

Это отвечает на вопрос, заданный потенциальным покупателем в своем поиске. Теперь потенциальный покупатель может сравнить продукты и их цены, а также информацию, как характеристики, способы оплаты и доставки, чтобы определить наилучшее возможное предложение.

Оптимизация ценообразования оказывает влияние на бизнес в том смысле, что такие методы могут повысить прибыль на 10%.

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

Единственная проблема в том, чтобы обновлять данные в режиме реального времени и оставаться в курсе ежесекундно, поскольку цены постоянно меняются на исходных сайтах. Для обновления цены на сайтах сравнения цен используются вакансии Cron или при просмотре. Однако это будет зависеть от конфигурации владельца сайта.

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

2. Веб-скрейпинг в R

Сравнение цен становится громоздким, поскольку получить веб-данные не так просто – существуют такие технологии, как HTML, XML и JSON для распространения содержимого.

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

Что такое R?

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

Начнем с того, что R – это язык для статистических вычислений и графики. Статистики и копители данных часто используют R из-за его развития статистического программного обеспечения и его сосредоточенность на анализе данных.

Одной из причин, почему R является любимым среди этой группы людей, является качество графиков, которые можно разработать, включая математические символы и формулы, где это нужно.

R великолепен, поскольку он предлагает широкий спектр функций и пакетов, которые могут выполнять задачи интеллекта данных.

rvest, RCrawler и т.д. — это пакеты R, которые используются для сбора данных.

В этом сегменте мы увидим, какие инструменты нужны для работы с R для выполнения веб-скрейпинга. Мы рассмотрим это на примере использования веб-сайта Amazon, откуда мы попытаемся получить данные о продукте и сохранить их в виде JSON.

Требования

В этом случае знание R является важным, и я предполагаю, что у вас есть базовое понимание Р. Вы должны знать хотя бы один интерфейс R, например RStudio. Интерфейс установки базового R в порядке.

Если вы не знаете о R и других связанных интерфейсах, вам следует ознакомиться с этим руководством.

Теперь давайте разберемся, как будут установлены пакеты, которые мы будем использовать.

Пакеты:

1. rvest

Хедли Викхэм является автором пакета rvest для веб-скрейпинга в R. rvest полезен для извлечения необходимой информации из веб-страниц.

Кроме того, вам также нужно установить пакеты селектор и ‘xml2’.

Шаги установки:

install.packages(‘selectr’)
install.packages(‘xml2’)
install.packages(‘rvest’)

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

  • read_html(url) : удалять содержимое HTML из заданного URL-адреса
  • html_nodes(): определяет обертки HTML.
  • html_nodes(“.class”): вызывает узел на основе класса CSS
  • html_nodes(“#id”): вызывает узел на основе идентификатора
  • html_nodes(xpath=”xpath”): вызывает узел на основе xpath (мы рассмотрим это позже)
  • html_attrs(): определяет атрибуты (полезно для отладки)
  • html_table(): преобразует таблицы HTML во фреймы данных
  • html_text(): удаляет теги HTML и извлекает только текст

2. stringr

stringr вступает в игру, когда вы думаете о задачах, связанных с очисткой и подготовкой данных.

У stringr есть четыре основных набора функций:

  • Функции stringr полезны, поскольку они позволяют обойти отдельные символы в строках векторов символов
  • существуют инструменты пробелов, которые можно использовать для добавления, удаления и манипулирования пробелами.
  • существуют операции, чувствительные к локали, операции которых будут отличаться в зависимости от локали.
  • есть функции сопоставления шаблонов. Эти функции распознают четыре части описания шаблона. Регулярные выражения стандартные, но есть и другие инструменты

Установка

install.packages(‘stringr’)

3. jsonlite

Полезным пакетом jsonline является то, что это парсер/генератор JSON, оптимизированный для Интернета.

Это жизненно важно, поскольку обеспечивает эффективное отображение между данными JSON и ключевыми типами данных R. Используя это мы можем конвертировать между объектами R и JSON без потери типа или информации и без необходимости вручную проверять данные.

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

Установка

install.packages(‘jsonlite’)

Прежде чем перейти к нему, давайте посмотрим, как это работает:

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

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

Веб-скрейпинг имеет определенный процесс, который обычно работает следующим образом:

  • Доступ к странице с R
  • Укажите R, где «искать» на странице
  • Превратите данные в удобный для использования формат в R с помощью пакета rvest

Теперь перейдем к реализации, чтобы лучше это понять.

3. Реализация

Давайте реализуем и посмотрим, как это работает. Мы проверим веб-сайт Amazon для сравнения цен на продукт под названием One Plus 6, мобильный телефон.

Вы можете увидеть это здесь.

Шаг 1: Загрузка нужных пакетов

Нам нужно находиться в консоли в командной строке R, чтобы начать процесс. Когда мы там, нам нужно скачать необходимые пакеты, как показано ниже:

#loading the package:> library(xml2)> library(rvest)> library(stringr)

Шаг 2: Чтение HTML-содержимого с Amazon

#Specifying the url for desired website to be scrappedurl <- ‘https://www.amazon.in/OnePlus-Mirror-Black-64GB-Memory/dp/B0756Z43QS?tag=googinhydr18418-21&tag=googinkenshoo-21&ascsubtag=aee9a916-6acd-4409-92ca-3bdbeb549f80’
#Reading the html content from Amazonwebpage <- read_html(url)

В этом коде мы считываем содержимое HTML с заданного URL-адреса и назначаем этот HTML в файл webpage переменный.

Шаг 3. Получите информацию о продукте из Amazon

Теперь, как следующий шаг, мы вытащим такую ​​информацию с веб-сайта:

Название: Название продукта.
Цена: Цена изделия.
Описание: Описание продукта.
Рейтинг: Оценка продукта пользователями.
Размер: Размер изделия.
Цвет: Цвет изделия.

Этот снимок показывает, как расположены эти поля.

pkjBWv02tpI-K7rmIfaXVHpaOyAe1EEntazu

Далее мы будем использовать теги HTML, например название продукта и цена, для извлечения данных с помощью элемента Inspect.

Чтобы узнать класс тега HTML, выполните следующие действия.

=> перейти к браузеру Chrome => перейти к этому URL-адресу => щелкнуть правой кнопкой мыши => inspect элемент

ПРИМЕЧАНИЕ. Если вы не используете браузер Chrome, см. статью.

На основе селекторов CSS, таких как class и id, мы будем извлекать данные из HTML. Чтобы найти класс CSS для названия продукта, нужно щелкнуть правой кнопкой мыши на заголовке и выбрать «Проверить» или «Проверить элемент».

Flm5Bs2obtKKuzvfITUik-KvxXLCeoOoFQQe

Как вы можете видеть ниже, я вытащил название продукта с помощью html_nodes в котором я передал id заголовка h1#title — и webpage в котором хранилось содержимое HTML.

Я также мог бы получить текст заголовка, используя html_text и напечатайте текст заголовка с помощью head () функция.

#scrape title of the product> title_html <- html_nodes(webpage, ‘h1#title’)> title <- html_text(title_html)> head(title)

Результат показан ниже:

QyHXYYJnwO8XjmE0Rl7kOPuZySAWexA4Pa0G

Мы могли бы получить имя продукта, используя пробелы и \n.

Следующим шагом будет удаление пробелов и новой строки с помощью str_replace_all() функция в библиотеке stringr

# remove all space and new linesstr_replace_all(title, “[\r\n]” , “”)

Выход:

a2hhGLdfMWUXoI1l14w50EPTpn3gDaQqFZ3E

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

Цена продукта:

# scrape the price of the product> price_html <- html_nodes(webpage, ‘span#priceblock_ourprice’)> price <- html_text(price_html)
# remove spaces and new line> str_replace_all(title, “[\r\n]” , “”)
# print price value> head(price)

Выход:

BaQkWbhiOTbEcPPE8yDxCUOxYNzQcA-Hjbid

Описание продукта:

# scrape product description> desc_html <- html_nodes(webpage, ‘div#productDescription’)> desc <- html_text(desc_html)
# replace new lines and spaces> desc <- str_replace_all(desc, “[\r\n\t]” , “”)> desc <- str_trim(desc)> head(desc)

Выход:

4rRvYGeRcPvmIUfinTn2bXKREpb8GEOTkohp

Рейтинг товара:

# scrape product rating > rate_html <- html_nodes(webpage, ‘span#acrPopover’)> rate <- html_text(rate_html)
# remove spaces and newlines and tabs > rate <- str_replace_all(rate, “[\r\n]” , “”)> rate <- str_trim(rate)
# print rating of the product> head(rate)

Выход:

AaFCC2rDSdUbkhwe191ZEuvW61Qkg7DMjbkA

Размер изделия:

# Scrape size of the product> size_html <- html_nodes(webpage, ‘div#variation_size_name’)> size_html <- html_nodes(size_html, ‘span.selection’)> size <- html_text(size_html)
# remove tab from text> size <- str_trim(size)
# Print product size> head(size)

Выход:

kCt3GDbF097jzs-5iki5BFnkvsUZW7kIjf4h

Цвет изделия:

# Scrape product color> color_html <- html_nodes(webpage, ‘div#variation_color_name’)> color_html <- html_nodes(color_html, ‘span.selection’)> color <- html_text(color_html)
# remove tabs from text> color <- str_trim(color)
# print product color> head(color)

Выход:

t0NsecrDY9EcA4a2fy9yoZaFujN3ZVNsKEHz

Давайте скомпилируем и объединим их, чтобы разработать фрейм данных и проверить его структуру.

#Combining all the lists to form a data frameproduct_data <- data.frame(Title = title, Price = price,Description = desc, Rating = rate, Size = size, Color = color)
#Structure of the data framestr(product_data)

Выход:

FcmJzO0w75kaurbce4JBCLRvPuYiLIhP3NO8

В этом выводе мы можем увидеть все скачиваемые данные во фреймах данных.

Шаг 5. Сохраняйте данные в формате JSON:

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

Данные будут храниться в формате JSON для дальнейшей обработки.

Выполните указанный код и получите результат JSON.

# Include ‘jsonlite’ library to convert in JSON form.> library(jsonlite)
# convert dataframe into JSON format> json_data <- toJSON(product_data)
# print output> cat(json_data)

В код выше я включил jsonlite библиотека для использования toJSON() функция преобразования объекта dataframe в форму JSON.

В конце процесса мы сохранили данные в формате JSON и распечатали их.
По желанию можно также хранить данные в файле CSV или в базе данных для дальнейшей обработки.

Выход:

U9xauMDxyvYfXFjq5TLk-hn11A85f6UO3O4c

Следуя этому практическому примеру, вы также можете извлечь соответствующие данные о том же из продукта и сравнить с Amazon, чтобы определить справедливую стоимость продукта. Таким же образом можно использовать данные для сравнения с другими веб-сайтами.

4. Конечная нота

Как видите, R может дать вам отличные рычаги для сбора данных с разных веб-сайтов. Благодаря этой практической иллюстрации того, как R можно использовать, теперь вы можете самостоятельно исследовать его и извлекать данные о продуктах из Amazon или любого другого веб-сайта электронной коммерции.

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

Не стесняйтесь присылать мне свои отзывы и предложения по этой публикации!

Добавить комментарий

Ваш адрес email не будет опубликован.