Une introduction au web scraping à l'aide de R

Avec le boom du commerce électronique, les entreprises se sont connectées. Les clients recherchent également des produits en ligne. Contrairement au marché hors ligne, un client peut comparer le prix d'un produit disponible à différents endroits en temps réel.

Par conséquent, des prix compétitifs sont devenus la partie la plus cruciale d'une stratégie commerciale.

Afin de maintenir les prix de vos produits compétitifs et attractifs, vous devez surveiller et garder une trace des prix fixés par vos concurrents. Si vous connaissez la stratégie de tarification de vos concurrents, vous pouvez en conséquence aligner votre stratégie de tarification pour avoir un avantage sur eux.

Par conséquent, la surveillance des prix est devenue un élément essentiel du processus de gestion d'une entreprise de commerce électronique.

Vous vous demandez peut-être comment obtenir les données pour comparer les prix.

Les 3 meilleures façons d'obtenir les données dont vous avez besoin pour comparer les prix

1. Flux des marchands

Comme vous le savez peut-être, il existe plusieurs sites de comparaison de prix disponibles sur Internet. Ces sites entrent dans une sorte de compréhension avec les entreprises dans laquelle ils obtiennent les données directement d'eux et qu'ils utilisent pour comparer les prix.

Ces entreprises mettent en place une API ou utilisent FTP pour fournir les données. En général, une commission de référence est ce qui rend un site de comparaison de prix financièrement viable.

2. Flux de produits provenant d'API tierces

D'autre part, il existe des services qui proposent des données de commerce électronique via une API. Lorsqu'un tel service est utilisé, le tiers paie le volume de données.

3. Scraping Web

Le scraping Web est l'un des moyens les plus robustes et les plus fiables d'obtenir des données Web à partir d'Internet. Il est de plus en plus utilisé dans l'intelligence des prix car c'est un moyen efficace d'obtenir les données produit à partir de sites de commerce électronique.

Vous n'avez peut-être pas accès à la première et à la deuxième option. Par conséquent, le web scraping peut venir à votre secours. Vous pouvez utiliser le web scraping pour tirer parti de la puissance des données afin d'arriver à des prix compétitifs pour votre entreprise.

Le web scraping peut être utilisé pour obtenir les prix actuels pour le scénario de marché actuel et le commerce électronique plus généralement. Nous utiliserons le web scraping pour obtenir les données d'un site de commerce électronique. Dans ce blog, vous apprendrez à gratter les noms et les prix des produits d'Amazon dans toutes les catégories, sous une marque particulière.

Extraire régulièrement des données d'Amazon peut vous aider à suivre les tendances du marché en matière de prix et vous permettre de définir vos prix en conséquence.

Table des matières

  1. Web scraping pour comparaison de prix
  2. Web scraping dans R
  3. la mise en oeuvre
  4. Note de fin

1. Web scraping pour comparaison de prix

Comme le dit la sagesse du marché, le prix est tout. Les clients prennent leurs décisions d'achat en fonction du prix. Ils fondent leur compréhension de la qualité d'un produit sur le prix. En bref, le prix est ce qui motive les clients et, par conséquent, le marché.

Par conséquent, les sites de comparaison de prix sont très demandés. Les clients peuvent facilement naviguer sur l'ensemble du marché en regardant les prix du même produit à travers les marques. Ces sites de comparaison de prix extraient le prix du même produit à partir de différents sites.

Outre les prix, les sites Web de comparaison de prix récupèrent également des données telles que la description du produit, les spécifications techniques et les fonctionnalités. Ils projettent toute la gamme d'informations sur une seule page de manière comparative.

Cela répond à la question posée par l'acheteur potentiel lors de sa recherche. Désormais, l'acheteur potentiel peut comparer les produits et leurs prix, ainsi que des informations telles que les fonctionnalités, les options de paiement et d'expédition, afin de pouvoir identifier la meilleure offre possible.

L'optimisation des prix a un impact sur l'entreprise en ce sens que de telles techniques peuvent augmenter les marges bénéficiaires de 10%.

Le commerce électronique est une question de prix compétitifs, et il s'est également étendu à d'autres domaines commerciaux. Prenons le cas du voyage. Maintenant, même les sites Web liés aux voyages grattent le prix des sites Web des compagnies aériennes en temps réel pour fournir la comparaison des prix des différentes compagnies aériennes.

Le seul défi est de mettre à jour les données en temps réel et de rester à jour chaque seconde car les prix changent constamment sur les sites sources. Les sites de comparaison de prix utilisent des emplois Cron ou au moment de la consultation pour mettre à jour le prix. Cependant, cela reposera sur la configuration du propriétaire du site.

C'est là que ce blog peut vous aider - vous pourrez élaborer un script de scraping que vous pourrez personnaliser en fonction de vos besoins. Vous pourrez extraire des flux de produits, des images, des prix et tous les autres détails pertinents concernant un produit à partir d'un certain nombre de sites Web différents. Avec cela, vous pouvez créer votre puissante base de données pour le site de comparaison de prix.

2. Web scraping dans R

La comparaison de prix devient fastidieuse car obtenir des données Web n'est pas si simple - il existe des technologies telles que HTML, XML et JSON pour distribuer le contenu.

Ainsi, pour obtenir les données dont vous avez besoin, vous devez naviguer efficacement dans ces différentes technologies. R peut vous aider à accéder aux données stockées dans ces technologies. Cependant, cela nécessite une compréhension approfondie de R avant de commencer.

Qu'est-ce que R?

Le scraping Web est une tâche avancée que peu de gens effectuent. Le web scraping avec R est, certainement, une programmation technique et avancée. Une compréhension adéquate de R est essentielle pour le web scraping de cette manière.

Pour commencer, R est un langage pour le calcul statistique et les graphiques. Les statisticiens et les mineurs de données utilisent beaucoup R en raison de son logiciel statistique en évolution et de sa concentration sur l'analyse des données.

L'une des raisons pour lesquelles R est un tel favori parmi cet ensemble de personnes est la qualité des graphiques qui peuvent être élaborés, y compris des symboles et des formules mathématiques, le cas échéant.

R est merveilleux car il offre une grande variété de fonctions et de packages capables de gérer les tâches d'exploration de données.

rvest, RCrawler, etc. sont des packages R utilisés pour les processus de collecte de données.

In this segment, we will see what kinds of tools are required to work with R to carry out web scraping. We will see it through the use case of Amazon website from where we will try to get the product data and store it in JSON form.

Requirements

In this use case, knowledge of R is essential and I am assuming that you have a basic understanding of R. You should be aware of at least any one R interface, such as RStudio. The base R installation interface is fine.

If you are not aware of R and the other associated interfaces, you should go through this tutorial.

Now let’s understand how the packages we’re going to use will be installed.

Packages:

1. rvest

Hadley Wickham authored the rvest package for web scraping in R. rvest is useful in extracting the information you need from web pages.

Along with this, you also need to install the selectr and ‘xml2’ packages.

Installation steps:

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

rvest contains the basic web scraping functions, which are quite effective. Using the following functions, we will try to extract the data from web sites.

  • read_html(url) : scrape HTML content from a given URL
  • html_nodes(): identifies HTML wrappers.
  • html_nodes(“.class”): calls node based on CSS class
  • html_nodes(“#id”): calls node based on id
  • html_nodes(xpath=”xpath”): calls node based on xpath (we’ll cover this later)
  • html_attrs(): identifies attributes (useful for debugging)
  • html_table(): turns HTML tables into data frames
  • html_text(): strips the HTML tags and extracts only the text

2. stringr

stringr comes into play when you think of tasks related to data cleaning and preparation.

There are four essential sets of functions in stringr:

  • stringr functions are useful because they enable you to work around the individual characters within the strings in character vectors
  • there are whitespace tools which can be used to add, remove, and manipulate whitespace
  • there are locale sensitive operations whose operations will differ from locale to locale
  • there are pattern matching functions. These functions recognize four parts of pattern description. Regular expressions are the standard one but there are other tools as well

Installation

install.packages(‘stringr’)

3. jsonlite

What makes the jsonline package useful is that it is a JSON parser/generator which is optimized for the web.

It is vital because it enables an effective mapping between JSON data and the crucial R data types. Using this, we are able to convert between R objects and JSON without loss of type or information, and without the need for any manual data wrangling.

This works really well for interacting with web APIs, or if you want to create ways through which data can travel in and out of R using JSON.

Installation

install.packages(‘jsonlite’)

Before we jump-start into it, let’s see how it works:

It should be clear at the outset that each website is different, because the coding that goes into a website is different.

Web scraping is the technique of identifying and using these patterns of coding to extract the data you need. Your browser makes the website available to you from HTML. Web scraping is simply about parsing the HTML made available to you from your browser.

Web scraping has a set process that works like this, generally:

  • Access a page from R
  • Instruct R where to “look” on the page
  • Convert data in a usable format within R using the rvest package

Now let’s go to implementation to understand it better.

3. Implementation

Let’s implement it and see how it works. We will scrape the Amazon website for the price comparison of a product called “One Plus 6”, a mobile phone.

You can see it here.

Step 1: Loading the packages we need

We need to be in the console, at R command prompt to start the process. Once we are there, we need to load the packages required as shown below:

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

Step 2: Reading the HTML content from Amazon

#Specifying the url for desired website to be scrappedurl <- ‘//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)

In this code, we read the HTML content from the given URL, and assign that HTML into the webpage variable.

Step 3: Scrape product details from Amazon

Now, as the next step, we will extract the following information from the website:

Title: The title of the product.

Price: The price of the product.

Description: The description of the product.

Rating: The user rating of the product.

Size: The size of the product.

Color: The color of the product.

This screenshot shows how these fields are arranged.

Next, we will make use of HTML tags, like the title of the product and price, for extracting data using Inspect Element.

In order to find out the class of the HTML tag, use the following steps:

=> go to chrome browser => go to this URL => right click => inspect element

NOTE: If you are not using the Chrome browser, check out this article.

Based on CSS selectors such as class and id, we will scrape the data from the HTML. To find the CSS class for the product title, we need to right-click on title and select “Inspect” or “Inspect Element”.

As you can see below, I extracted the title of the product with the help of html_nodes in which I passed the id of the title — h1#title — and webpage which had stored HTML content.

I could also get the title text using html_text and print the text of the title with the help of the head () function.

#scrape title of the product> title_html  title  head(title)

The output is shown below:

We could get the title of the product using spaces and \n.

The next step would be to remove spaces and new line with the help of the str_replace_all() function in the stringr library.

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

Output:

Now we will need to extract the other related information of the product following the same process.

Price of the product:

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

Output:

Product description:

# scrape product description> desc_html  desc <- html_text(desc_html)
# replace new lines and spaces> desc  desc  head(desc)

Output:

Rating of the product:

# scrape product rating > rate_html  rate <- html_text(rate_html)
# remove spaces and newlines and tabs > rate  rate <- str_trim(rate)
# print rating of the product> head(rate)

Output:

Size of the product:

# Scrape size of the product> size_html  size_html  size <- html_text(size_html)
# remove tab from text> size <- str_trim(size)
# Print product size> head(size)

Output:

Color of the product:

# Scrape product color> color_html  color_html  color <- html_text(color_html)
# remove tabs from text> color <- str_trim(color)
# print product color> head(color)

Output:

Step 4: We have successfully extracted data from all the fields which can be used to compare the product information from another site.

Let’s compile and combine them to work out a dataframe and inspect its structure.

#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)

Output:

In this output we can see all the scraped data in the data frames.

Step 5: Store data in JSON format:

As the data is collected, we can carry out different tasks on it such as compare, analyze, and arrive at business insights about it. Based on this data, we can think of training machine learning models over this.

Data would be stored in JSON format for further process.

Follow the given code and get the JSON result.

# 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)

In the code above, I have included jsonlite library for using the toJSON() function to convert the dataframe object into JSON form.

At the end of the process, we have stored data in JSON format and printed it.

It is possible to store data in a csv file also or in the database for further processing, if we wish.

Output:

Following this practical example, you can also extract the relevant data for the same from product from //www.oneplus.in/6 and compare with Amazon to work out the fair value of the product. In the same way, you can use the data to compare it with other websites.

4. End note

As you can see, R can give you great leverage in scraping data from different websites. With this practical illustration of how R can be used, you can now explore it on your own and extract product data from Amazon or any other e-commerce website.

A word of caution for you: certain websites have anti-scraping policies. If you overdo it, you will be blocked and you will begin to see captchas instead of product details. Of course, you can also learn to work your way around the captchas using different services available. However, you do need to understand the legality of scraping data and whatever you are doing with the scraped data.

Feel free to send to me your feedback and suggestions regarding this post!