CoderCastrov logo
CoderCastrov
Парсер

Парсинг контента веб-сайта с помощью Python

Парсинг контента веб-сайта с помощью Python
просмотров
3 мин чтение
#Парсер

Из моей статьи Puppeteer. make yourself at chrome. я получил некоторую идею об автоматизации поиска контента через YouTube. Что, если мы хотим спарсить некоторый контент с веб-сайта? Возможно ли это? Ответ - да. И сегодня мы будем парсить контент с веб-сайта электронной коммерции Flipkart, поэтому давайте посмотрим, что мы хотим.

Цель

Мы хотим спарсить контент Apple iPhone 11 с веб-сайта Flipkart.

Страница продукта Flipkart
  • Название продукта
  • Ссылка на продукт
  • Цена
  • Описание продукта
  • Рейтинг отзывов
  • Комментарии к отзывам

Подготовка

Для начала нам нужно установить несколько инструментов, чтобы начать писать код.

  • Python3
  • Visual Studio Code

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

Приступим к кодированию

Создайте папку с названием flipkart-scrape и создайте файл с названием main.py

mkdir flipkart-scrape
touch main.py

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

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
from bs4 import BeautifulSoup

Мы используем selenium для открытия веб-драйвера Chrome и bs4 для преобразования содержимого в формат BeautifulSoup.

И после этого добавьте этот код для начала парсинга.

driver = webdriver.Chrome(ChromeDriverManager(cache_valid_range=0).install())
link = "[https://www.flipkart.com/apple-iphone-11-white-64-gb/p/itm2644c3764fc54?pid=MOBFKCTSHAWGGFHM&lid=LSTMOBFKCTSHAWGGFHMCPQSMX&marketplace=FLIPKART&srno=s_1_4&otracker=AS_QueryStore_OrganicAutoSuggest_1_9_na_na_ps&otracker1=AS_QueryStore_OrganicAutoSuggest_1_9_na_na_ps&fm=organic&iid=505d8cab-debd-4157-8157-c6c910875182.MOBFKCTSHAWGGFHM.SEARCH&ssid=cie4w1suy80000001601195482047&qH=7b7504afcaf2e1ea](https://www.flipkart.com/apple-iphone-11-white-64-gb/p/itm2644c3764fc54?pid=MOBFKCTSHAWGGFHM&lid=LSTMOBFKCTSHAWGGFHMCPQSMX&marketplace=FLIPKART&srno=s_1_4&otracker=AS_QueryStore_OrganicAutoSuggest_1_9_na_na_ps&otracker1=AS_QueryStore_OrganicAutoSuggest_1_9_na_na_ps&fm=organic&iid=505d8cab-debd-4157-8157-c6c910875182.MOBFKCTSHAWGGFHM.SEARCH&ssid=cie4w1suy80000001601195482047&qH=7b7504afcaf2e1ea)"
driver.get(link)
timeout = 5
try:
    element_present = EC.presence_of_element_located((By.ID, 'container'))
    WebDriverWait(driver, timeout).until(element_present)
except TimeoutException:
    print("Превышено время ожидания загрузки страницы")

Затем запустите

pip3 install  selenium webdriver_manager bs4
python3 main.py

Он откроет Chrome и перейдет по ссылке Iphone11

В коде выше мы просто устанавливаем Chrome и сохраняем его в переменной с названием driver. Затем мы выполняем драйвер для перехода по нашей ссылке. После этого мы ждем, пока не появится идентификатор с названием container. Если он не появляется и время ожидания истекает, мы выводим ошибку, что не можем получить элемент с идентификатором container.

Затем мы получим содержимое страницы и преобразуем его в формат BeautifulSoup, добавив этот код

content = driver.page_source
soup = BeautifulSoup(content, 'html.parser')

И содержимое страницы будет сохранено в переменной soup. Теперь нам нужно получить уникальный класс, например, название продукта. Мы открываем Chrome, открываем URL-адрес Flipkart и находим имя класса, которое мы хотим спарсить, открыв инструменты разработчика и проверив имя класса продукта. Вот так.

После того, как мы получили имя класса, мы добавляем его в код, например, так

name = soup.find('span', attrs={'class': '_35KyD6'}).text
price = soup.find('div', attrs={'class': '_3qQ9m1'}).text
description = soup.find('div', attrs={'class': '_38NXIU'}).text
rating = soup.find('div', attrs={'class': '_1i0wk8'}).text
comment = soup.find('div', attrs={'class': 'qwjRop'}).text

Код просто говорит: найдите span или div, содержащий указанный класс, а затем получите текст из него.

Последний шаг. Сохраните результат в переменной и выведите его на экран для проверки.

result = {
        "Название продукта" : name,
        "Ссылка на продукт" : link,
        "Цена продукта" : price,
        "Описание продукта" : description,
        "Рейтинг продукта" : rating,
        "Комментарий к отзыву" : comment,
    }
print(result)

Результат будет выглядеть примерно так.

И когда мы запустим полный код, он будет выглядеть так.

Вот и все для простого парсинга данных с Flipkart с помощью Python. Полный код доступен здесь.

klogic/flipkart-scrape-python

flipkart-scrape-python. . Внести вклад в развитие klogic/flipkart-scrape-python, создав учетную запись на GitHub.

github.com