Scraping GoShopOnline.com.my using PHP & MySQL: Extract Product Prices, Promotions, and Customer Reviews for Competitive Analysis

Scraping GoShopOnline.com.my using PHP & MySQL: Extract Product Prices, Promotions, and Customer Reviews for Competitive Analysis

In the digital age, competitive analysis is crucial for businesses aiming to stay ahead in the market. One effective way to gather competitive intelligence is through web scraping. This article explores how to scrape GoShopOnline.com.my using PHP and MySQL to extract valuable data such as product prices, promotions, and customer reviews. This information can be pivotal for businesses looking to enhance their market strategies.

Understanding Web Scraping

Web scraping is the process of extracting data from websites. It involves fetching the HTML of a webpage and parsing it to retrieve specific information. This technique is widely used for data mining, price comparison, and market research. However, it’s essential to ensure that web scraping is done ethically and in compliance with the website’s terms of service.

For GoShopOnline.com.my, web scraping can provide insights into product pricing trends, promotional strategies, and customer feedback. This data can be used to adjust pricing strategies, improve product offerings, and enhance customer satisfaction.

Setting Up the Environment

Before diving into the code, it’s important to set up the necessary environment. You’ll need a server with PHP and MySQL installed. Additionally, you’ll need to install the PHP cURL library, which allows you to send HTTP requests and handle responses.

To install cURL, you can use the following command on a Linux server:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo apt-get install php-curl
sudo apt-get install php-curl
sudo apt-get install php-curl

Once cURL is installed, ensure that your PHP configuration file (php.ini) has the cURL extension enabled. This can be done by uncommenting the line:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
extension=curl
extension=curl
extension=curl

Scraping Product Prices

To scrape product prices from GoShopOnline.com.my, you’ll need to identify the HTML structure of the product pages. This can be done using browser developer tools to inspect the elements containing the price information.

Here’s a basic PHP script to scrape product prices:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
loadHTML($response);
$xpath = new DOMXPath($dom);
$price = $xpath->query('//span[@class="product-price"]')->item(0)->nodeValue;
echo "Product Price: " . $price;
?>
loadHTML($response); $xpath = new DOMXPath($dom); $price = $xpath->query('//span[@class="product-price"]')->item(0)->nodeValue; echo "Product Price: " . $price; ?>
loadHTML($response);
$xpath = new DOMXPath($dom);

$price = $xpath->query('//span[@class="product-price"]')->item(0)->nodeValue;
echo "Product Price: " . $price;
?>

This script initializes a cURL session to fetch the HTML content of a product page. It then uses DOMDocument and DOMXPath to parse the HTML and extract the price information.

Extracting Promotions

Promotions are a key aspect of competitive analysis. By understanding the promotional strategies of competitors, businesses can adjust their own marketing efforts. Similar to scraping prices, promotions can be extracted by identifying the relevant HTML elements.

Here’s an example script to extract promotions:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
loadHTML($response);
$xpath = new DOMXPath($dom);
$promotions = $xpath->query('//div[@class="promotion-details"]');
foreach ($promotions as $promotion) {
echo "Promotion: " . $promotion->nodeValue . "
";
}
?>
loadHTML($response); $xpath = new DOMXPath($dom); $promotions = $xpath->query('//div[@class="promotion-details"]'); foreach ($promotions as $promotion) { echo "Promotion: " . $promotion->nodeValue . " "; } ?>
loadHTML($response);
$xpath = new DOMXPath($dom);

$promotions = $xpath->query('//div[@class="promotion-details"]');
foreach ($promotions as $promotion) {
    echo "Promotion: " . $promotion->nodeValue . "
";
}
?>

This script follows a similar approach to the price extraction script but targets the HTML elements containing promotion details.

Gathering Customer Reviews

Customer reviews provide valuable insights into consumer preferences and product performance. Scraping reviews can help businesses understand customer sentiment and identify areas for improvement.

Here’s a script to scrape customer reviews:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
loadHTML($response);
$xpath = new DOMXPath($dom);
$reviews = $xpath->query('//div[@class="customer-review"]');
foreach ($reviews as $review) {
echo "Review: " . $review->nodeValue . "
";
}
?>
loadHTML($response); $xpath = new DOMXPath($dom); $reviews = $xpath->query('//div[@class="customer-review"]'); foreach ($reviews as $review) { echo "Review: " . $review->nodeValue . " "; } ?>
loadHTML($response);
$xpath = new DOMXPath($dom);

$reviews = $xpath->query('//div[@class="customer-review"]');
foreach ($reviews as $review) {
    echo "Review: " . $review->nodeValue . "
";
}
?>

This script extracts customer reviews by targeting the HTML elements that contain review content. The extracted reviews can be stored in a database for further analysis.

Storing Data in MySQL

Once the data is scraped, it needs to be stored in a database for easy access and analysis. MySQL is a popular choice for storing structured data. Below is a basic MySQL script to create a table for storing product data:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
price DECIMAL(10, 2) NOT NULL,
promotion TEXT,
review TEXT
);
CREATE TABLE products ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, price DECIMAL(10, 2) NOT NULL, promotion TEXT, review TEXT );
CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    price DECIMAL(10, 2) NOT NULL,
    promotion TEXT,
    review TEXT
);

After creating the table, you can use PHP to insert the scraped data into the database:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO products (name, price, promotion, review) VALUES ('Product Name', '99.99', '20% off', 'Great product!')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "
" . $conn->error;
}
$conn->close();
?>
connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "INSERT INTO products (name, price, promotion, review) VALUES ('Product Name', '99.99', '20% off', 'Great product!')"; if ($conn->query($sql) === TRUE) { echo "New record created successfully"; } else { echo "Error: " . $sql . " " . $conn->error; } $conn->close(); ?>
connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "INSERT INTO products (name, price, promotion, review) VALUES ('Product Name', '99.99', '20% off', 'Great product!')";
if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "
" . $conn->error;
}

$conn->close();
?>

This script connects to a MySQL database and inserts a new record into the products table. The data can then be queried and analyzed to gain insights into market trends.

Conclusion

Scraping GoShopOnline.com.my using PHP and MySQL provides businesses with valuable data for competitive analysis. By extracting product prices, promotions, and customer reviews, companies can make informed decisions to enhance their market strategies. While web scraping

Responses

Related blogs

an introduction to web scraping with NodeJS and Firebase. A futuristic display showcases NodeJS code extrac
parsing XML using Ruby and Firebase. A high-tech display showcases Ruby code parsing XML data structure
handling timeouts in Python Requests with Firebase. A high-tech display showcases Python code implement
downloading a file with cURL in Ruby and Firebase. A high-tech display showcases Ruby code using cURL t