Can I scrape images of products from Nordstrom?

Scraping images from websites, including Nordstrom, falls into a legal and ethical gray area. Before you attempt to scrape images or any content from a website, you should consider the following:

  1. Terms of Service: Review the website's Terms of Service (ToS) to see if scraping is prohibited. Violating the ToS can result in legal action against you or your organization.

  2. Copyright Law: Images are often copyrighted material. Downloading and using them without permission can constitute a violation of copyright laws.

  3. Website Load: Web scraping can put significant load on a website's servers. Be mindful of the frequency and volume of your scraping to avoid disrupting the service for other users.

  4. Privacy and Ethical Considerations: Ensure that your scraping activities respect user privacy and comply with relevant ethical standards.

If you have determined that scraping images is permissible and does not violate any laws or terms of service, you can use the following techniques to scrape images from a website:

Using Python with BeautifulSoup and requests

Python has libraries like BeautifulSoup and requests that make web scraping relatively straightforward.

import requests
from bs4 import BeautifulSoup
import os

# Define the URL of the site
base_url = ''

# Send a GET request to the website
headers = {'User-Agent': 'Your User Agent'}
response = requests.get(base_url, headers=headers)

# Check if the request was successful
if response.status_code == 200:
    # Parse the HTML content
    soup = BeautifulSoup(response.text, 'html.parser')

    # Find all image tags
    image_tags = soup.find_all('img')

    # Directory where you want to save the images
    save_dir = 'nordstrom_images'
    if not os.path.exists(save_dir):

    # Loop over each image tag and try to download the image
    for img in image_tags:
            img_url = img['src']
            # Sometimes an image source can be relative 
            # If it is provide the base url 
            if not img_url.startswith(('data:image', 'javascript')):
                if not img_url.startswith('http'):
                    img_url = '{}{}'.format(base_url, img_url)

                # Get the image file name
                filename = os.path.join(save_dir, img_url.split('/')[-1])

                # Download and save the image
                img_data = requests.get(img_url).content
                with open(filename, 'wb') as handler:
        except Exception as e:
            # If there was any issue downloading an image, just skip it
            print(f"Could not download {img_url}")
    print(f"Error - HTTP status code: {response.status_code}")

Using JavaScript with Puppeteer

JavaScript can also be used to scrape images, particularly with tools like Puppeteer, which allow you to control a headless browser.

const puppeteer = require('puppeteer');

(async () => {
    // Launch a new browser session
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto('');

    // Take a screenshot of the page (could be used instead of scraping individual images)
    // await page.screenshot({ path: 'nordstrom_screenshot.png' });

    // Get all images on the page
    const images = await page.evaluate(() => {
        return Array.from(document.querySelectorAll('img')).map(img => img.src);

    // Save each image
    for (let imgSrc of images) {
        // Use the Node.js 'fs' module to save the image to your local filesystem
        // You would need to write the code to download and save the image here.

    await browser.close();

Remember to install Puppeteer with npm install puppeteer before running the script.

Important Note: The above code examples are for educational purposes only. Ensure that you have the legal right to scrape and download content from the website in question before proceeding. It is always best to seek explicit permission from the website owner when in doubt.

Related Questions

Get Started Now

WebScraping.AI provides rotating proxies, Chromium rendering and built-in HTML parser for web scraping