Как парсить отзывы на Amazon с помощью Python
Создайте скрипт для парсинга отзывов на Amazon с использованием библиотек Playwright и Selectolax для Python
В этой статье мы покажем вам, как создать веб-парсер, который извлекает отзывы с страницы товара на Amazon с использованием Python. Для взаимодействия с веб-страницами мы используем библиотеку Playwright, для парсинга HTML-контента - библиотеку Selectolax, а для ведения журнала - библиотеку Loguru.
Важно отметить, что Amazon постоянно пытается усложнить задачу создания ботов для парсинга их страниц с продуктами и отзывами. В настоящее время (в июле 2023 года) кажется, что возможно только парсить эти страницы с помощью имитированного веб-браузера. Вот почему мы используем Playwright для Python.
Установка необходимых библиотек Python
Python-скрипт, представленный в этой статье, использует несколько библиотек. Чтобы установить нестандартные библиотеки Python, необходимо выполнить следующие действия перед запуском скрипта:
pip install playwright
pip install selectolax
pip install loguru
Кроме того, необходимо выполнить следующую команду, чтобы убедиться, что все зависимости для библиотеки Playwright также установлены:
playwright install
Обзор скрипта для парсинга Amazon
Python-скрипт организован в виде главной функции и класса с названием Reviews
. Вот пошаговое описание того, что делает скрипт:
Импорт библиотек: Скрипт начинается с импорта необходимых библиотек и модулей. Это включает sync_playwright
из библиотеки Playwright, HTMLParser
из библиотеки Selectolax, dataclass
из библиотеки dataclasses, time
и csv
из стандартной библиотеки Python, а также logger
из библиотеки Loguru.
Определение класса данных: Определяется класс данных с названием Item
, в котором есть пять полей: asin
, product
, title
, rating
и body
. Этот класс используется для хранения информации о каждом отзыве.
Определение класса Reviews: Класс Reviews
имеет несколько методов для парсинга и обработки данных.
__init__()
: Этот метод инициализирует объектReviews
. Он запускает экземпляр Playwright, запускает браузер Chromium и настраивает парсер HTML.__enter__()
и__exit__()
: Эти методы используются для того, чтобы сделать классReviews
менеджером контекста. Это означает, что вы можете использовать операторwith
для управления ресурсами. Когда блокwith
начинается, вызывается метод__enter__()
; когда блокwith
завершается, вызывается метод__exit__()
. В данном случае метод__exit__()
закрывает браузер и останавливает экземпляр Playwright.__get_html()
: Этот закрытый метод создает URL страницы с отзывами Amazon для заданного продукта (идентифицируемого по его ASIN) и номера страницы, переходит на эту страницу и получает ее HTML-контент. Он проверяет, есть ли на странице отзывы, и возвращает разобранный HTML, если они есть, илиFalse
в противном случае.__parse_html()
: Этот закрытый метод разбирает заданную HTML-страницу, извлекает название продукта и отзывы, и возвращает список объектовItem
, представляющих отзывы.read_csv()
: Этот метод читает CSV-файл и возвращает список ASIN.to_csv()
: Этот метод записывает список отзывов в CSV-файл.run_single()
: Этот метод получает все доступные отзывы для одного ASIN.run_multiple()
: Этот метод получает все доступные отзывы для списка ASIN.__run()
: Этот закрытый метод является вспомогательной функцией для методовrun_single()
иrun_multiple()
. Он получает и разбирает все страницы с отзывами для заданного ASIN.
Определение главной функции: Функция main()
- это место, где начинается выполнение скрипта. Она создает объект Reviews
для парсинга отзывов для одного ASIN и списка ASIN, прочитанного из CSV-файла. Затем отзывы записываются в CSV-файлы.
Запуск скрипта: Скрипт запускается, если он является главным модулем. Это определяется проверкой значения __name__
, равно ли оно '__main__'
. Если это так, вызывается функция main()
.
Скрипт для парсинга отзывов на Amazon
Запуск скрипта для парсинга отзывов на Amazon
Для запуска этого скрипта на Python вам потребуется предоставить ему ASIN (Amazon Standard Identification Number). Вы можете сделать это разными способами.
Для функции run_single()
в функции main()
мы задали ASIN напрямую. Вы можете заменить его на любой ASIN на ваш выбор. Функция run_multiple()
, с другой стороны, требует наличия CSV-файла с названием "products.csv". В этом CSV-файле должны быть указаны ASIN на отдельных строках.
После создания такого CSV-файла вы можете запустить скрипт следующим образом:
python reviews.py
Ссылки
“Как парсить отзывы на товары на Amazon с помощью Python” YouTube-видео Джона Уотсона Руни
“Браузеры теперь необходимы? Парсинг Amazon в 2023 году” YouTube-видео Джона Уотсона Руни
“Playwright для Python” документация
“Selectolax” документация
“Loguru — простая библиотека логирования для Python” документация