Εισαγωγή στο web scraping χρησιμοποιώντας το R

Με την έκρηξη του ηλεκτρονικού εμπορίου, οι επιχειρήσεις έχουν συνδεθεί στο διαδίκτυο. Οι πελάτες, επίσης, αναζητούν προϊόντα στο διαδίκτυο. Σε αντίθεση με την αγορά εκτός σύνδεσης, ένας πελάτης μπορεί να συγκρίνει την τιμή ενός προϊόντος που διατίθεται σε διαφορετικά μέρη σε πραγματικό χρόνο.

Επομένως, η ανταγωνιστική τιμολόγηση είναι κάτι που έχει γίνει το πιο σημαντικό μέρος μιας επιχειρηματικής στρατηγικής.

Για να διατηρήσετε τις τιμές των προϊόντων σας ανταγωνιστικές και ελκυστικές, θα πρέπει να παρακολουθείτε και να παρακολουθείτε τις τιμές που ορίζουν οι ανταγωνιστές σας. Εάν γνωρίζετε ποια είναι η στρατηγική τιμολόγησης των ανταγωνιστών σας, μπορείτε αναλόγως να ευθυγραμμίσετε τη στρατηγική τιμολόγησης για να αποκτήσετε πλεονέκτημα.

Ως εκ τούτου, η παρακολούθηση των τιμών έχει καταστεί ζωτικό μέρος της διαδικασίας λειτουργίας μιας επιχείρησης ηλεκτρονικού εμπορίου.

Ίσως αναρωτιέστε πώς να αποκτήσετε τα δεδομένα για να συγκρίνετε τις τιμές.

Οι 3 κορυφαίοι τρόποι λήψης των δεδομένων που χρειάζεστε για σύγκριση τιμών

1. Τροφοδοσίες από εμπόρους

Όπως ίσως γνωρίζετε, υπάρχουν αρκετοί ιστότοποι σύγκρισης τιμών στο Διαδίκτυο. Αυτοί οι ιστότοποι παίρνουν ένα είδος κατανόησης με τις επιχειρήσεις στις οποίες λαμβάνουν τα δεδομένα απευθείας από αυτές και τις οποίες χρησιμοποιούν για σύγκριση τιμών.

Αυτές οι επιχειρήσεις δημιουργούν ένα API ή χρησιμοποιούν το FTP για να παρέχουν τα δεδομένα. Γενικά, μια προμήθεια παραπομπής είναι αυτή που καθιστά τον ιστότοπο σύγκρισης τιμών οικονομικά βιώσιμο.

2. Ροές προϊόντων από API τρίτων

Από την άλλη πλευρά, υπάρχουν υπηρεσίες που προσφέρουν δεδομένα ηλεκτρονικού εμπορίου μέσω ενός API. Όταν χρησιμοποιείται μια τέτοια υπηρεσία, ο τρίτος πληρώνει τον όγκο των δεδομένων.

3. Διαγραφή Ιστού

Το scraping στο Διαδίκτυο είναι ένας από τους πιο ισχυρούς και αξιόπιστους τρόπους λήψης δεδομένων ιστού από το Διαδίκτυο. Χρησιμοποιείται όλο και περισσότερο στην ευφυΐα τιμής, επειδή είναι ένας αποτελεσματικός τρόπος λήψης των δεδομένων προϊόντων από ιστότοπους ηλεκτρονικού εμπορίου.

Ενδέχεται να μην έχετε πρόσβαση στην πρώτη και τη δεύτερη επιλογή. Ως εκ τούτου, το web scraping μπορεί να σας βοηθήσει. Μπορείτε να χρησιμοποιήσετε το web scraping για να αξιοποιήσετε τη δύναμη των δεδομένων για να φτάσετε σε ανταγωνιστικές τιμές για την επιχείρησή σας.

Το web scraping μπορεί να χρησιμοποιηθεί για να πάρει τις τρέχουσες τιμές για το τρέχον σενάριο της αγοράς και το ηλεκτρονικό εμπόριο γενικότερα. Θα χρησιμοποιήσουμε το web scraping για να λάβουμε τα δεδομένα από έναν ιστότοπο ηλεκτρονικού εμπορίου. Σε αυτό το ιστολόγιο, θα μάθετε πώς να διαγράφετε τα ονόματα και τις τιμές των προϊόντων από την Amazon σε όλες τις κατηγορίες, υπό μια συγκεκριμένη μάρκα.

Η εξαγωγή δεδομένων από την Amazon περιοδικά μπορεί να σας βοηθήσει να παρακολουθείτε τις τάσεις της αγοράς στις τιμές και να σας επιτρέψει να ορίσετε τις τιμές σας ανάλογα.

Πίνακας περιεχομένων

  1. Ξύσιμο Ιστού για σύγκριση τιμών
  2. Διαγραφή ιστού σε R
  3. Εκτέλεση
  4. Τελική σημείωση

1. Διαγραφή Ιστού για σύγκριση τιμών

Όπως λέει η σοφία της αγοράς, η τιμή είναι το παν. Οι πελάτες λαμβάνουν τις αποφάσεις αγοράς τους με βάση την τιμή. Βασίζουν την κατανόησή τους για την ποιότητα ενός προϊόντος στην τιμή. Εν ολίγοις, η τιμή είναι αυτό που οδηγεί τους πελάτες και, ως εκ τούτου, την αγορά.

Επομένως, οι ιστότοποι σύγκρισης τιμών έχουν μεγάλη ζήτηση. Οι πελάτες μπορούν εύκολα να περιηγηθούν σε ολόκληρη την αγορά εξετάζοντας τις τιμές του ίδιου προϊόντος σε όλες τις μάρκες. Αυτοί οι ιστότοποι σύγκρισης τιμών εξάγουν την τιμή του ίδιου προϊόντος από διαφορετικούς ιστότοπους.

Μαζί με την τιμή, οι ιστότοποι σύγκρισης τιμών καταγράφουν επίσης δεδομένα όπως η περιγραφή του προϊόντος, οι τεχνικές προδιαγραφές και τα χαρακτηριστικά. Προβάλλουν ολόκληρη τη συλλογή πληροφοριών σε μία σελίδα με συγκριτικό τρόπο.

Αυτό απαντά στην ερώτηση που υπέβαλε ο υποψήφιος αγοραστής στην αναζήτησή του. Τώρα ο υποψήφιος αγοραστής μπορεί να συγκρίνει τα προϊόντα και τις τιμές του, μαζί με πληροφορίες όπως χαρακτηριστικά, επιλογές πληρωμής και αποστολής, ώστε να μπορούν να προσδιορίσουν την καλύτερη δυνατή διαθέσιμη προσφορά.

Η βελτιστοποίηση τιμών επηρεάζει την επιχείρηση με την έννοια ότι τέτοιες τεχνικές μπορούν να αυξήσουν τα περιθώρια κέρδους κατά 10%.

Το ηλεκτρονικό εμπόριο αφορά την ανταγωνιστική τιμολόγηση και έχει εξαπλωθεί και σε άλλους τομείς της επιχείρησης. Πάρτε την περίπτωση του ταξιδιού. Τώρα ακόμη και ιστότοποι που σχετίζονται με ταξίδια αφαιρούν την τιμή από ιστότοπους αεροπορικών εταιρειών σε πραγματικό χρόνο για να παρέχουν τη σύγκριση τιμών διαφορετικών αεροπορικών εταιρειών.

Η μόνη πρόκληση σε αυτό είναι η ενημέρωση των δεδομένων σε πραγματικό χρόνο και η ενημέρωση κάθε δευτερόλεπτο καθώς οι τιμές συνεχίζουν να αλλάζουν στους ιστότοπους προέλευσης. Οι ιστότοποι σύγκρισης τιμών χρησιμοποιούν εργασίες Cron ή κατά το χρόνο προβολής για να ενημερώσουν την τιμή. Ωστόσο, θα εξαρτηθεί από τη διαμόρφωση του κατόχου του ιστότοπου.

Εδώ μπορεί να σας βοηθήσει αυτό το ιστολόγιο - θα μπορείτε να επεξεργαστείτε ένα σενάριο που μπορείτε να προσαρμόσετε ανάλογα με τις ανάγκες σας. Θα μπορείτε να εξαγάγετε ροές προϊόντων, εικόνες, τιμές και όλες τις άλλες σχετικές λεπτομέρειες σχετικά με ένα προϊόν από έναν αριθμό διαφορετικών ιστότοπων. Με αυτό, μπορείτε να δημιουργήσετε την ισχυρή βάση δεδομένων σας για τον ιστότοπο σύγκρισης τιμών.

2. Ξύσιμο Ιστού σε R

Η σύγκριση των τιμών γίνεται δυσκίνητη επειδή η λήψη δεδομένων ιστού δεν είναι τόσο εύκολη - υπάρχουν τεχνολογίες όπως HTML, XML και JSON για τη διανομή του περιεχομένου.

Έτσι, για να λάβετε τα δεδομένα που χρειάζεστε, πρέπει να πλοηγηθείτε αποτελεσματικά σε αυτές τις διαφορετικές τεχνολογίες. Το R μπορεί να σας βοηθήσει να αποκτήσετε πρόσβαση σε δεδομένα που είναι αποθηκευμένα σε αυτές τις τεχνολογίες. Ωστόσο, απαιτεί λίγο σε βάθος κατανόηση του R πριν ξεκινήσετε.

Τι είναι το R;

Το web scraping είναι μια προηγμένη εργασία που δεν εκτελούν πολλοί άνθρωποι. Η απομάκρυνση Ιστού με R είναι ασφαλώς τεχνικός και προηγμένος προγραμματισμός. Η επαρκής κατανόηση του R είναι απαραίτητη για την απόξεση ιστού με αυτόν τον τρόπο.

Αρχικά, το R είναι μια γλώσσα για στατιστικούς υπολογισμούς και γραφικά. Οι στατιστικολόγοι και οι ανθρακωρύχοι χρησιμοποιούν το R πολύ λόγω του εξελισσόμενου στατιστικού λογισμικού και της εστίασης στην ανάλυση δεδομένων.

Ένας λόγος για τον οποίο το R είναι τόσο αγαπημένο σε αυτό το σύνολο ανθρώπων είναι η ποιότητα των γραφικών που μπορούν να επιλυθούν, συμπεριλαμβανομένων μαθηματικών συμβόλων και τύπων όπου απαιτείται.

Το R είναι υπέροχο επειδή προσφέρει μια τεράστια ποικιλία λειτουργιών και πακέτων που μπορούν να χειριστούν εργασίες εξόρυξης δεδομένων.

rvest, RCrawler κ.λπ. είναι πακέτα R που χρησιμοποιούνται για διαδικασίες συλλογής δεδομένων.

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.

Προειδοποίηση για εσάς: ορισμένοι ιστότοποι έχουν πολιτικές κατά της απόξεσης . Εάν το παρακάνετε, θα αποκλείσετε και θα αρχίσετε να βλέπετε captchas αντί για λεπτομέρειες προϊόντος. Φυσικά, μπορείτε επίσης να μάθετε να εργάζεστε γύρω από τα captchas χρησιμοποιώντας διαφορετικές διαθέσιμες υπηρεσίες. Ωστόσο, πρέπει να κατανοήσετε τη νομιμότητα της απόσυρσης δεδομένων και ό, τι κάνετε με τα δεδομένα.

Μη διστάσετε να μου στείλετε τα σχόλιά σας και τις προτάσεις σας σχετικά με αυτήν την ανάρτηση!