input: Write a function to scrape product data from an online web store using Python BeautifulSoup. The function should make a GET request to fetch the raw HTML content, parse the HTML using BeautifulSoup, and extract the name, price, and description of each product. The function should return a list of dictionaries where each dictionary contains the name, price, and description of a product. If the request fails or the HTML structure is not as expected, the function should return an empty list.
  assert scrape_products('http://web-store.com')==[{'name': 'Product1', 'price': '$10', 'description': 'Description1'}, {'name': 'Product2', 'price': '$20', 'description': 'Description2'}]
  assert scrape_products('http://invalid-url.com')==[]
  assert scrape_products('http://web-store.com/wrong-page')==[]
output: def scrape_products(url):
      try:
          import requests
          from bs4 import BeautifulSoup
          response = requests.get(url)
          if response.status_code != 200:
              return []
          soup = BeautifulSoup(response.content, 'html.parser')
          products = []
          for item in soup.find_all('div', class_='product'):
              name = item.find('h2', class_='name').text
              price = item.find('span', class_='price').text
              description = item.find('p', class_='description').text
              products.append({'name': name, 'price': price, 'description': description})
          return products
      except:
          return []