Руководство по очистке веб-сайта электронной коммерции и работе с нумерацией страниц с помощью 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. Подпишитесь на нашу бесплатную еженедельную рассылку здесь.