Как сделать исключение класса в парсере, чтобы парсер исключал определенный класс
Мне нужно, чтобы парсер, не собирал данные из класса <ul class="b-catalog__subcats is-inner">, а всю остальную информацию собирал, как мне это сделать, подскажите пожалуйста???
HTML код от куда парсер берет данные:
<div class="wrapper-short">
<h4>Особенности:</h4>
<ul>
<li>Многоплатная схема</li>
<li>Подключение 220 В</li>
<li>Горелка 26 серии в комплекте</li>
<li>ПВ 60% при токе 200 Ампер</li>
<li>Полноценная функция ручной дуговой сварки MMA</li>
<li>Автоматическая защита от перегрева</li>
<li>Регулировка продувки газом после сварки</li>
<li>Полная комплектация + ЗИП</li>
<li>Прочная коробка для транспортировки</li>
<li>Гарантия 2 года</li>
</ul>
<h4>Комплектация:</h4>
<ul>
<li>Инверторный аппарат аргонодуговой сварки - 1 шт.</li>
<li>Клемма заземления с кабелем - 1 шт. </li>
<li>Аргонодуговая горелка 26 серии - 1 шт.</li>
<li>Паспорт оборудования - 1 шт.</li>
</ul>
<ul class="b-catalog__subcats is-inner">
<li>
<a href="https://ptk-svarka.ru/catalog/svarochnye-invertory/220v-2">220 вольт</a>
</li>
<li>
<a href="https://ptk-svarka.ru/catalog/apparaty-argonodugovoy-svarki-tig/tig-200">TIG 200</a>
</li>
<li>
<a href="https://ptk-svarka.ru/catalog/apparaty-argonodugovoy-svarki-tig/220v">220 вольт</a>
</li>
<li>
<a href="https://ptk-svarka.ru/catalog/svarochnye-invertory/master-2">Мастер</a>
</li>
<li>
<a href="https://ptk-svarka.ru/catalog/apparaty-argonodugovoy-svarki-tig/postoyannyj-tok">DC</a>
</li>
<li>
<a href="https://ptk-svarka.ru/catalog/apparaty-argonodugovoy-svarki-tig/master">Мастер</a>
</li>
<li>
<a href="https://ptk-svarka.ru/catalog/svarochnye-invertory/200-amper">200 ампер</a>
</li>
</ul>
</div>
Вот сам парсер:
import requests
from bs4 import BeautifulSoup
import csv
import os
URL = 'https://ptk-svarka.ru/product/ptk-master-tig-200'
HEADERS = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36', 'accept': '*/*'}
def get_html(url, params=None):
r = requests.get(url, headers=HEADERS, params=params)
return r
def get_html_vivod(html):
svarka = []
soup = BeautifulSoup(html, 'html.parser')
items = soup.find_all('div', class_='b-product-tab__item is-active')
for item in items:
svarka.append({
"text": item.find('div', class_='wrapper-short')
})
return svarka
html = get_html(URL)
print(get_html_vivod(html.text))
Ответы (1 шт):
Автор решения: Viewed
→ Ссылка
Если в расчет брать только класс wrapper-short (на странице есть другие данные), то получить данные можно следующим образом.
Класс b-catalog__subcats is-inner избегается за счет поиска тега ul с пустым значением класса items.find_all('ul', class_=''). В блоке wrapper-short находится три ul, два из которых без класса.
from bs4 import BeautifulSoup
import requests
import csv
import os
def get_html(url, params=None):
return requests.get(url, headers=HEADERS, params=params)
def parse_html(html):
items = BeautifulSoup(html, 'html.parser').find('div', class_='wrapper-short')
desctiption = [p.text for p in items.find_all('p')]
features, equipment = items.find_all('ul', class_='')
return desctiption, features.text, equipment.text
URL = 'https://ptk-svarka.ru/product/profi-tig-315-p-acdc'
HEADERS = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36', 'accept': '*/*'}
html = get_html(URL)
data = parse_html(html.text)
print(data[0]) # desctiption
print(data[1]) # features
print(data[2]) # equipment