Руководство по очистке веб-сайта электронной коммерции и работе с нумерацией страниц с помощью BeautifulSoup.
BeautifulSoup — отличный инструмент библиотеки Python для извлечения данных из файлов HTML и XML. Для парсинга веб-страниц вам необходимо иметь некоторые базовые знания о селекторах HTML и CSS. Для получения дополнительной информации перейдите по ссылке ниже:
Начало работы
для начала убедитесь, что в вашей системе установлена версия Python3+ и BeautifulSoup
, а затем просто введите эту команду в своем терминале:
pip install beautifulsoup4
Проверим веб-сайт
В этом случае мы будем парсить веб-сайт электронной коммерции под названием: https://cruisemaster.com.au/shop/.
Во-первых, мы собираемся проверить элемент, щелкнув правой кнопкой мыши на странице и выбрав проверку элемента:
Как видите, HTML-тег ‹li class=product› — это тот тег, который мы ищем, теперь у нас есть все, что нам нужно, так что давайте кодировать.
Во-первых, нам нужно импортировать HTTP-библиотеку запроса из Python и BeautifulSoup.
from bs4 import BeautifulSoup import requests
Затем мы создаем переменную с именем isHaveNextPage и переменную с именем page,
переменную, которая позже пригодится для разбиения на страницы.
isHaveNextPage=True page=1
Запрос HTTP
Далее мы собираемся получить URL-адрес и страницу и преобразовать их в lxml:
r=requests.get(f"https://cruisemaster.com.au/shop/?sort=featured&page={page}").text soup=BeautifulSoup(r,"lxml")
И выбираем тег HTML, который у нас есть:
product=soup.find_all("li",class_="product")
Поскольку мы используем метод find_all, чтобы получить все элементы «li» с классом product в массиве, нам нужно зациклить все массивы в переменной «product».
for data in product:
И получите элементы внутри данных и получите заголовок, цену и рейтинг, а затем распечатайте данные.
for data in product: print(“title:”,data.find(“h4”,class_=”card-title”).find(“a”).text) print(“price:”,data.find(“span”,class_=”price”).text) print(“rating:”,len(data.find_all(“span”,class_=”icon — ratingFull”)))
Затем находим следующий элемент кнопки Pagination.
На последней странице элемент кнопки следующей страницы исчезнет,
поэтому давайте создадим условие в коде, если следующей страницы нет, тогда установим для переменной isHaveNextPage значение false. На следующей странице мы меняем переменную page плюс 1:
if soup.find(“li”,class_=’pagination-item — next’) is None: isHaveNextPage=False page+=1
Затем мы зацикливаем весь код до последней страницы, используя цикл while:
И запускаем все скрипты в терминале командой python3 yourfile.py
и результат будет такой:
Весь код:
видео запуска приложения:
Спасибо за прочтение. Удачного скрейпинга!
наймите меня на upwork или fiverr
Дальнейшее чтение
Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку здесь.