CoderCastrov logo
CoderCastrov
Парсер данных с Амазона

Как извлечь данные с Amazon без использования API?

Как извлечь данные с Amazon без использования API?
просмотров
4 мин чтение
#Парсер данных с Амазона

Всем известно, что у Amazon есть собственное API, но иногда лучше не использовать его (ограничение на количество запросов - большая причина), поэтому давайте посмотрим, как извлечь данные с Amazon без использования API!

Сначала нам понадобится установить Python. В Python есть много пакетов для парсинга веб-данных, таких как Selenium и BeautifulSoup, в этом руководстве мы будем использовать Selenium.

Сначала давайте перейдем на сайт Amazon и посмотрим на товар. Давайте рассмотрим пример с ноутбуком.

Вы можете видеть, что на скриншоте есть много данных, включая название, рейтинги, цены и многое другое. Допустим, мы хотим извлечь название, цену, рейтинги и т. д. и рассмотрим, как мы это сделаем.

Начнем с настройки среды Python, мы хотим импортировать пакеты Selenium, Pandas и webdriver manager, который мы будем использовать для установки драйвера, мы делаем это с помощью следующих строк кода:

# ИМПОРТИРУЕМ ЭТИ ПАКЕТЫ
import selenium
from selenium import webdriver
import pandas as pd
# ДОПОЛНИТЕЛЬНЫЙ ПАКЕТ, МОЖЕТ ПОТРЕБОВАТЬСЯ
from webdriver_manager.chrome import ChromeDriverManager

Затем мы хотим установить и объявить драйвер и указать веб-сайт, на который мы хотим перейти. Для этого используйте этот код:

# ЭТО ИНИЦИАЛИЗИРУЕТ ДРАЙВЕР (ТО ЕСТЬ ВЕБ-БРАУЗЕР)
driver = webdriver.Chrome(ChromeDriverManager().install())
# ЭТО ПРАКТИЧЕСКИ СООБЩАЕТ ВЕБ-БРАУЗЕРУ, НА КАКОЙ ВЕБ-САЙТ ПЕРЕЙТИ
driver.get('https://www.amazon.com/Acer-Display-Graphics-Keyboard-A515-43-R19L/dp/B07RF1XD36/ref=sr_1_3?dchild=1&keywords=laptop&qid=1618857971&sr=8-3')

Функция driver.get сообщает браузеру, на какой веб-сайт мы хотим перейти. Затем мы хотим создать две переменные - title (название) и pricing (цена), которые будут содержать текст значений с веб-сайта. Это станет понятным позже. Затем мы будем использовать функцию Selenium driver.find_element_by_xpath() для получения текста с веб-сайта и сохранения его в этих переменных. Вот как мы это сделаем:

# НАЗВАНИЕ ТОВАРА
Title = driver.find_element_by_xpath('ВСТАВЬТЕ ПОЛНЫЙ XPATH ЗДЕСЬ').text
# ЦЕНА ТОВАРА
Price = driver.find_element_by_xpath('ВСТАВЬТЕ ПОЛНЫЙ XPATH ЗДЕСЬ').text
# КОЛИЧЕСТВО ОЦЕНОК
Rating = driver.find_element_by_xpath('ВСТАВЬТЕ ПОЛНЫЙ XPATH ЗДЕСЬ').text

Затем мы хотим получить полный xpath. Для этого мы хотим открыть веб-браузер и перейти на конкретную веб-страницу, затем щелкнуть правой кнопкой мыши на любом тексте названия и выбрать "Инспектировать" > посмотреть на выделенную часть в консоли инспектора > затем щелкнуть правой кнопкой мыши на ней и выбрать "Копировать" > и выбрать "Копировать полный xpath", используйте данное изображение в качестве источника:

Затем мы хотим скопировать и вставить xpath в кавычки внутри переменной Title, эта переменная будет выглядеть примерно так:

Title = driver.find_element_by_xpath('/html/body/div[2]/div[3] Мы затем хотим /div[9]/div[4]/div[4]/div[1]/div/h1/span').text

Отлично! Теперь давайте сделаем то же самое для цены. Просто щелкните правой кнопкой мыши на любом тексте цены, затем выберите "Инспектировать" > посмотрите на выделенную часть в консоли инспектора > затем щелкните правой кнопкой мыши на ней и выберите "Копировать" > выберите "Копировать полный xpath", используйте данное изображение в качестве источника:

Затем вставьте его в переменную price, переменная цены будет выглядеть примерно так:

Price = driver.find_element_by_xpath('/html/body/div[2]/div[3]/div[9]/div[4]/div[4]/div[10]/div[1]/div/table/tbody/tr/td[2]/span[1]').text

Наконец, давайте сделаем то же самое для количества оценок. Просто щелкните правой кнопкой мыши на любом тексте оценок, затем выберите "Инспектировать" > посмотрите на выделенную часть в консоли инспектора > затем щелкните правой кнопкой мыши на ней и выберите "Копировать" > выберите "Копировать полный xpath", используйте данное изображение в качестве источника:

Rating = driver.find_element_by_xpath('/html/body/div[2]/div[3]/div[8]/div[4]/div[4]/div[3]/div/span[3]/a/span').text

Отлично! Теперь нам просто нужно создать пустые объекты Pandas DataFrame с именами переменных и добавить их в DataFrame. Для этого используйте следующий код:

# СОЗДАЕТ ПУСТОЙ DATAFRAME
data1 = {'Title':[], 'Price':[], 'Rating':[],}
fulldf = pd.DataFrame(data1)

Почти готово! Теперь добавьте данные из переменных в другую переменную и добавьте данные в объект Pandas DataFrame, используя следующий код:

# ДОБАВЛЯЕМ ИЗВЛЕЧЕННЫЕ ДАННЫЕ В СУЩЕСТВУЮЩИЙ DATAFRAME
row = [Title, Price, Rating]
fulldf.loc[len(fulldf)] = row

Отлично! Вот весь код (с некоторыми дополнениями), который мы разработали в проекте:

# ИМПОРТИРУЕМ ЭТИ ПАКЕТЫ
import selenium
from selenium import webdriver
import pandas as pd
# ДОПОЛНИТЕЛЬНЫЙ ПАКЕТ, МОЖЕТ ПОТРЕБОВАТЬСЯ
from webdriver_manager.chrome import ChromeDriverManager
# ЭТО ИНИЦИАЛИЗИРУЕТ ДРАЙВЕР (ТО ЕСТЬ ВЕБ-БРАУЗЕР)
driver = webdriver.Chrome(ChromeDriverManager().install())
# ЭТО ПРАКТИЧЕСКИ СООБЩАЕТ ВЕБ-БРАУЗЕРУ, НА КАКОЙ ВЕБ-САЙТ ПЕРЕЙТИ
driver.get('https://www.amazon.com/Acer-Display-Graphics-Keyboard-A515-43-R19L/dp/B07RF1XD36/ref=sr_1_3?dchild=1&keywords=laptop&qid=1618857971&sr=8-3')
# НАЗВАНИЕ ТОВАРА
Title = driver.find_element_by_xpath('/html/body/div[2]/div[3]/div[9]/div[4]/div[4]/div[1]/div/h1/span').text
# ЦЕНА ТОВАРА
Price = driver.find_element_by_xpath('/html/body/div[2]/div[3]/div[9]/div[4]/div[4]/div[10]/div[1]/div/table/tbody/tr/td[2]/span[1]').text
# КОЛИЧЕСТВО ОЦЕНОК
Rating = driver.find_element_by_xpath('/html/body/div[2]/div[3]/div[8]/div[4]/div[4]/div[3]/div/span[3]/a/span').text
# ВЫВОДИМ ИЗВЛЕЧЕННЫЕ ДАННЫЕ
print(Title)
print(Price)
print(Rating)
# СОЗДАЕТ ПУСТОЙ DATAFRAME
data1 = {'Title':[], 'Price':[], 'Rating':[],}
fulldf = pd.DataFrame(data1)
# ДОБАВЛЯЕМ ИЗВЛЕЧЕННЫЕ ДАННЫЕ В СУЩЕСТВУЮЩИЙ DATAFRAME
row = [Title, Price, Rating]
fulldf.loc[len(fulldf)] = row

Есть два основных способа запустить эту программу: первый - запустить файл .py в командной строке или терминале, второй - запустить программу построчно. Однако, когда вы запускаете программу, вы увидите, что на экране появляется браузер Chrome, переходит на страницу товара на Amazon, и название и цена будут выводиться в консоль Python!

Потрясающе! Вы извлекли данные с Amazon! Вы можете исследовать различные способы улучшить проект, создать фронтенд с помощью Streamlit! Мы надеемся, что вам понравилась эта статья! Если у вас есть какие-либо мысли, предложения или комментарии, просто напишите их в соответствующем разделе ниже. Вы также можете обратиться к нам для всех ваших потребностей в парсинге данных с Amazon или запросить бесплатную оценку стоимости!


Оригинальная публикация на https://www.xbyte.io.