Как использовать условный оператор, если позиция отсутствует?
import requests
from bs4 import BeautifulSoup
import csv
import openpyxl
import pandas as pd
import xlsxwriter
import xlrd
from openpyxl import load_workbook
import numpy as np
from csv import writer
from lxml import html
headers = {
'accept': 'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
'user-agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 OPR/94.0.0.0 (Edition Yx 02)'
}
import xlsxwriter
from bs4 import BeautifulSoup
headers = {
'accept': 'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
'user-agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 '
'Safari/537.36 OPR/94.0.0.0 (Edition Yx 02)'
}
url = 'https://www.divan.ru/category/krovati/'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml') # создаем суп
pagination = soup.find('div', class_='dqBvL').find_all('a')
pages = int(pagination[-2].text)
print(f'Всего страниц: {pages}')
# Номер текущего товара
block_no = 1
data = []
for page in range(1, pages + 1):
page_response = requests.get(url + f'page-{page}', headers=headers)
page_soup = BeautifulSoup(page_response.text, 'lxml')
# Находим все блоки с товаром
blocks = page_soup.find('div', class_='Lei8X').find_all('div', class_='LlPhw')
price = page_soup.find('div', class_='Lei8X').find_all('div', class_='LlPhw')
# Проходимся по ним
for block in blocks:
# Ищем наименование
title = block.find('a', {'class': 'ImmXq dpmhZ b8BqN ProductName'}).text.strip()
price = block.find('span', {'class': 'Zq2dF F9ye5 KIkOH'}).text.strip()
data.append([block_no, title, price])
block_no += 1
print(title, price)
Я собираю информацию с сайта "Наименование" и "Цена". На последних страницах товар присутствует, но нет цены, написано "товар отсутствует". Там где товар отсутствует нет тега span, но появляется тег div class_= gWTeQ zR619, где "товар отсутствует". Как сделать, чтобы при парсинге, если цена отсутствует, он передавал тег - "товар отсутствует".
Источник: Stack Overflow на русском