Use Django REST APIs

Saddam Hussain
0

Automating Amazon Product Uploading Using Selenium and Django REST API: A Comprehensive Guide

Introduction

Amazon is one of the largest online marketplaces in the world, and for businesses, listing products efficiently is crucial to sales. However, manually uploading products can be time-consuming, especially if there are hundreds or thousands of items. Selenium, an open-source web automation tool, can help automate this process and save valuable time. Additionally, integrating Django REST Framework (DRF) allows us to create a scalable API-driven approach for managing product uploads.

In this guide, we will walk through the step-by-step process of automating product uploading to Amazon Seller Central using Selenium in Python and managing this automation through a Django REST API.

Prerequisites

Before we begin, ensure you have the following installed:

  • Python (Latest Version Recommended)
  • Selenium Library (pip install selenium)
  • WebDriver for your browser (e.g., ChromeDriver for Google Chrome)
  • Django (pip install django)
  • Django REST Framework (pip install djangorestframework)
  • Amazon Seller Central Account with necessary permissions

Setting Up Selenium for Amazon

1. Install Dependencies

pip install selenium djangorestframework

2. Download and Configure WebDriver

For Chrome users, download ChromeDriver. Ensure the driver is placed in a directory included in your system's PATH.

3. Import Required Libraries

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.chrome.service import Service

from selenium.webdriver.common.action_chains import ActionChains

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

import time

Creating a Django REST API for Product Uploads

We will now set up a Django project with Django REST Framework (DRF) to create an API endpoint that triggers the Selenium automation script.

1. Create a Django Project

django-admin startproject amazon_uploader

cd amazon_uploader

python manage.py startapp uploader

2. Configure Django Settings

Add rest_framework and uploader to INSTALLED_APPS in settings.py.

INSTALLED_APPS = [

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'rest_framework',

    'uploader',

]

3. Create a Serializer for Product Data

In uploader/serializers.py:

from rest_framework import serializers

 

class ProductSerializer(serializers.Serializer):

    title = serializers.CharField(max_length=255)

    description = serializers.CharField()

    price = serializers.FloatField()

    sku = serializers.CharField(max_length=50)

    category = serializers.CharField(max_length=100)

    image_paths = serializers.ListField(child=serializers.CharField(max_length=255))

4. Create a View for Handling Product Upload Requests

In uploader/views.py:

from rest_framework.views import APIView

from rest_framework.response import Response

from rest_framework import status

from .serializers import ProductSerializer

from .selenium_script import upload_product_automation

 

class ProductUploadView(APIView):

    def post(self, request):

        serializer = ProductSerializer(data=request.data)

        if serializer.is_valid():

            upload_product_automation(serializer.validated_data)

            return Response({"message": "Product uploaded successfully!"}, status=status.HTTP_200_OK)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

5. Define URL Routes

In uploader/urls.py:

from django.urls import path

from .views import ProductUploadView

 

urlpatterns = [

    path('upload/', ProductUploadView.as_view(), name='upload-product'),

]

Include this in amazon_uploader/urls.py:

from django.urls import path, include

 

urlpatterns = [

    path('api/', include('uploader.urls')),

]

Automating Product Upload with Selenium

Logging into Amazon Seller Central

def login_amazon(driver, email, password):

    driver.get("https://sellercentral.amazon.com")

    wait = WebDriverWait(driver, 10)

    email_input = wait.until(EC.presence_of_element_located((By.ID, "ap_email")))

    email_input.send_keys(email)

    driver.find_element(By.ID, "continue").click()

    password_input = wait.until(EC.presence_of_element_located((By.ID, "ap_password")))

    password_input.send_keys(password)

    driver.find_element(By.ID, "signInSubmit").click()

    time.sleep(5)  # Allow time for login

Uploading Product Data

def upload_product_automation(product_data):

    service = Service("path/to/chromedriver")

    driver = webdriver.Chrome(service=service)

    email = "your-email@example.com"

    password = "your-password"

    login_amazon(driver, email, password)

   

    driver.get("https://sellercentral.amazon.com/product-upload")

    time.sleep(3)

   

    driver.find_element(By.ID, "productTitle").send_keys(product_data['title'])

    driver.find_element(By.ID, "productDescription").send_keys(product_data['description'])

    driver.find_element(By.ID, "price").send_keys(str(product_data['price']))

    driver.find_element(By.ID, "sku").send_keys(product_data['sku'])

    driver.find_element(By.ID, "category").send_keys(product_data['category'])

    driver.find_element(By.ID, "category").send_keys(Keys.ENTER)

   

    image_upload_button = driver.find_element(By.ID, "imageUpload")

    for image_path in product_data['image_paths']:

        image_upload_button.send_keys(image_path)

        time.sleep(2)

   

    driver.find_element(By.ID, "submitButton").click()

    time.sleep(3)

    driver.quit()

Conclusion

By integrating Django REST Framework with Selenium, we can create a scalable and API-driven approach for uploading products to Amazon. This allows for greater flexibility and automation, making product management much more efficient.

Key Takeaways

  • Automating product uploading saves time.
  • Django REST API enables scalable integration with web applications.
  • Selenium works best for small to medium-scale uploads.
  • Handling security measures requires manual intervention.
  • Amazon APIs might be better for bulk uploads.

By following this guide, you can build a robust Amazon product uploader using Django and Selenium to streamline your e-commerce operations!

 

 


Post a Comment

0Comments
Post a Comment (0)