Pengenalan untuk mengikis web menggunakan R

Dengan ledakan e-dagang, perniagaan telah beroperasi dalam talian. Pelanggan juga mencari produk dalam talian. Tidak seperti pasaran luar talian, pelanggan dapat membandingkan harga produk yang terdapat di tempat yang berbeza dalam masa nyata.

Oleh itu, harga yang kompetitif adalah sesuatu yang telah menjadi bahagian terpenting dalam strategi perniagaan.

Untuk memastikan harga produk anda kompetitif dan menarik, anda perlu memantau dan memantau harga yang ditetapkan oleh pesaing anda. Sekiranya anda mengetahui strategi penetapan harga pesaing anda, anda dapat menyesuaikan strategi penetapan harga anda untuk mendapatkan kelebihan dari mereka.

Oleh itu, pemantauan harga telah menjadi bahagian penting dalam proses menjalankan perniagaan e-dagang.

Anda mungkin tertanya-tanya bagaimana mendapatkan data untuk membandingkan harga.

3 kaedah terbaik untuk mendapatkan data yang anda perlukan untuk perbandingan harga

1. Suapan daripada Pedagang

Seperti yang anda ketahui, terdapat beberapa laman perbandingan harga yang terdapat di internet. Laman web ini menjadi semacam pemahaman dengan perniagaan di mana mereka mendapatkan data secara langsung dari mereka dan yang mereka gunakan untuk perbandingan harga.

Bisnis ini menerapkan API, atau menggunakan FTP untuk menyediakan data. Secara amnya, komisen rujukan adalah yang menjadikan laman perbandingan harga layak secara kewangan.

2. Suapan produk dari API pihak ketiga

Sebaliknya, ada perkhidmatan yang menawarkan data e-commerce melalui API. Apabila perkhidmatan sedemikian digunakan, pihak ketiga membayar jumlah data.

3. Mengikis Web

Pengikisan laman web adalah salah satu cara paling kuat dan boleh dipercayai untuk mendapatkan data web dari internet. Ini semakin banyak digunakan dalam kecerdasan harga kerana ini adalah cara yang efisien untuk mendapatkan data produk dari laman web e-commerce.

Anda mungkin tidak mempunyai akses ke pilihan pertama dan kedua. Oleh itu, pengikisan laman web dapat membantu anda. Anda boleh menggunakan pengikisan web untuk memanfaatkan kekuatan data untuk mencapai harga yang kompetitif untuk perniagaan anda.

Pengikisan web boleh digunakan untuk mendapatkan harga semasa untuk senario pasaran semasa, dan e-commerce secara umum. Kami akan menggunakan pengikisan web untuk mendapatkan data dari laman web e-dagang. Di blog ini, anda akan belajar bagaimana mengikis nama dan harga produk dari Amazon dalam semua kategori, di bawah jenama tertentu.

Mengekstrak data dari Amazon secara berkala dapat membantu anda mengesan trend harga pasaran dan membolehkan anda menetapkan harga dengan sewajarnya.

Isi kandungan

  1. Mengikis laman web untuk perbandingan harga
  2. Mengikis laman web di R
  3. Pelaksanaan
  4. Catatan akhir

1. Pengikisan laman web untuk perbandingan harga

Seperti kata kebijaksanaan pasaran, harga adalah segalanya. Pelanggan membuat keputusan pembelian berdasarkan harga. Mereka mendasarkan pemahaman mereka tentang kualiti produk pada harga. Ringkasnya, harga adalah yang mendorong pelanggan dan, oleh itu, pasaran.

Oleh itu, laman perbandingan harga sangat diminati. Pelanggan dapat menavigasi seluruh pasaran dengan mudah dengan melihat harga produk yang sama di seluruh jenama. Laman web perbandingan harga ini mengekstrak harga produk yang sama dari laman web yang berbeza.

Bersama dengan harga, laman web perbandingan harga juga mengikis data seperti keterangan produk, spesifikasi teknikal, dan ciri. Mereka memproyeksikan keseluruhan maklumat dalam satu halaman secara perbandingan.

Ini menjawab soalan yang ditanyakan oleh calon pembeli dalam pencarian mereka. Kini calon pembeli dapat membandingkan produk dan harganya, bersama dengan maklumat seperti ciri, pembayaran, dan pilihan penghantaran, sehingga mereka dapat mengenal pasti tawaran terbaik yang tersedia.

Pengoptimuman harga memberi kesan kepada perniagaan dalam arti bahawa teknik tersebut dapat meningkatkan margin keuntungan sebanyak 10%.

E-commerce adalah mengenai harga yang kompetitif, dan ia juga telah tersebar ke domain perniagaan lain. Ambil kes perjalanan. Bahkan laman web yang berkaitan dengan perjalanan mengikis harga dari laman web syarikat penerbangan dalam masa nyata untuk memberikan perbandingan harga syarikat penerbangan yang berbeza.

Satu-satunya cabaran dalam hal ini ialah mengemas kini data dalam masa nyata dan terus mengemas kini setiap saat kerana harga terus berubah di laman sumber. Laman perbandingan harga menggunakan pekerjaan Cron atau pada masa paparan untuk mengemas kini harga. Walau bagaimanapun, ia bergantung pada konfigurasi pemilik laman web.

Di sinilah blog ini dapat menolong anda - anda akan dapat membuat skrip yang boleh anda sesuaikan untuk memenuhi keperluan anda. Anda akan dapat mengekstrak suapan produk, gambar, harga, dan semua perincian lain yang berkaitan dengan produk dari sebilangan laman web yang berbeza. Dengan ini, anda boleh membuat pangkalan data yang kuat untuk laman perbandingan harga.

2. Mengikis laman web dalam R

Perbandingan harga menjadi membebankan kerana mendapatkan data web tidak semudah itu - ada teknologi seperti HTML, XML, dan JSON untuk menyebarkan kandungan.

Oleh itu, untuk mendapatkan data yang anda perlukan, anda mesti menavigasi teknologi yang berbeza ini dengan berkesan. R dapat membantu anda mengakses data yang tersimpan dalam teknologi ini. Walau bagaimanapun, ia memerlukan sedikit pemahaman mendalam tentang R sebelum anda memulakan.

Apa itu R?

Pengikisan laman web adalah tugas lanjutan yang tidak dilakukan oleh banyak orang. Pengikisan laman web dengan R tentunya adalah pengaturcaraan teknikal dan lanjutan. Pemahaman yang cukup mengenai R sangat penting untuk mengikis web dengan cara ini.

Sebagai permulaan, R adalah bahasa untuk pengkomputeran statistik dan grafik. Ahli statistik dan pelombong data banyak menggunakan R kerana perisian statistiknya yang berkembang, dan fokusnya pada analisis data.

Salah satu sebab R menjadi kegemaran di kalangan kumpulan ini adalah kualiti plot yang dapat dikerjakan, termasuk simbol dan formula matematik di mana sahaja diperlukan.

R luar biasa kerana ia menawarkan pelbagai fungsi dan pakej yang dapat menangani tugas perlombongan data.

rvest, RCrawler dll adalah pakej R yang digunakan untuk proses pengumpulan data.

Dalam segmen ini, kita akan melihat jenis alat apa yang diperlukan untuk bekerjasama dengan R untuk melakukan pengikisan web. Kami akan melihatnya melalui kes penggunaan laman web Amazon dari mana kami akan berusaha mendapatkan data produk dan menyimpannya dalam bentuk JSON.

Keperluan

Sekiranya penggunaan ini, pengetahuan R adalah penting dan saya menganggap bahawa anda mempunyai pemahaman asas R . Anda harus mengetahui sekurang-kurangnya satu antara muka R, seperti RStudio. Antaramuka pemasangan asas R baik.

Sekiranya anda tidak mengetahui R dan antara muka lain yang berkaitan, anda harus menjalani tutorial ini.

Sekarang mari kita fahami bagaimana pakej yang akan kita gunakan akan dipasang.

Pakej:

1. menuai

Hadley Wickham mengarang pakej rvest untuk mengikis web di R. rvest berguna dalam mengekstrak maklumat yang anda perlukan dari laman web.

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!