Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
The process of extracting product data from Amazon using Python, including titles, ratings, prices, images, and descriptions.
| Date | Stars |
|---|---|
| 2026-07-24 | 3075 |
| 2026-07-25 | 3082 |
| 2026-07-28 | 3104 |
| 2026-07-30 | 3104 |
| 2026-08-06 | 3104 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
[](https://oxylabs.io/products/scraper-api/ecommerce/amazon?utm_source=877&utm_medium=affiliate&groupid=877&utm_content=how-to-scrape-amazon-product-data-github&transaction_id=102f49063ab94276ae8f116d224b67) [](https://discord.gg/Pds3gBmKMH) [](https://www.youtube.com/@oxylabs) # Scraping Amazon Product Data With Python You can find an extended version of this guide on our [blog](https://oxylabs.io/blog/scrape-amazon-product-data). This guide uses Python to scrape the following data points from Amazon: - Product name - Product rating - Product price - Product images - Product description ## Contents - [Setting up](#setting-up) + [Installing packages](#installing-packages) - [Scraping product data](#scraping-product-data) + [1. Sending a GET request with custom headers](#1.-sending-a-get-request-with-custom-headers) + [2. Locating and scraping product name](#2.-locating-and-scraping-product-name) + [3. Locating and scraping product rating](#3.-locating-and-scraping-product-rating) + [4. Locating and scraping product price](#4.-locating-and-scraping-product-price) + [5. Locating and scraping product image](#5.-locating-and-scraping-product-image) + [6. Locating and scraping product description](#6.-locating-and-scraping-product-description) + [7. Handling product listing](#7.-handling-product-listing) + [8. Exporting scraped product data to a CSV file](#8.-exporting-scraped-product-data-to-a-CSV-file) - [Reviewing the final script](#reviewing-the-final-script) - [An easier solution to extract Amazon data](#an-easier-solution-to-extract-Amazon-data) + [Scraping products from search results](#scraping-products-from-search-results) + [Extracting product details](#extracting-product-details) + [Scraping products by ASIN](#scraping-products-by-ASIN) ## Setting up Create a folder to save your code files. Also, creating a virtual environment is generally a good practice. The following commands work on macOS and Linux. The commands will create a virtual environment and activate it: ``` python3 -m venv .env source .env/bin/activate ``` If you are on Windows, these commands will vary a little: ``` python -m venv .env .env\scripts\activate ``` ### Installing packages ``` python3 -m pip install requests beautifulsoup4 lxml pandas ``` For Windows, use Python instead of Python3: ``` python -m pip install requests beautifulsoup4 lxml pandas ``` To try the Requests library, create a new file with the name amazon.py and enter the following: ``` import requests url = 'https://www.amazon.com/Bose-QuietComfort-45-Bluetooth-Canceling-Headphones/dp/B098FKXT8L' response = requests.get(url) print(response.text) ``` Save the file and run it from the terminal: ``` python3 amazon.py ``` In most cases, you cannot view the desired HTML. Amazon will block this request, and you will see the following text in the response: ``` To discuss automated access to Amazon data, please contact [email protected]. ``` If you print the `response.status_code`, you will see that instead of getting 200, which means success, you may get 503, which means an error. Amazon knows this request was not using a browser and thus blocks it. Many websites employ this practice. Amazon will block your requests and return an error code beginning with 500 or sometimes even 400. The solution is simple in most cases. You can send HTTP headers along with your request just like an actual browser. Sometimes, sending only the `user-agent` is enough. At other times, you may need to send more headers. A good example is sending the `accept-language` header. To identify the user-agent sent by
Excerpt of 17,992 characters
Read on GitHub22
6
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:fe02409cbe776d18, topic:web-scraping, name:scrape, readme:scrape