Создание списка артикулов из HTML кода
Всем привет. Хочу спарсить с сайта список артикулов запчастей.
HTML код части страницы в котором содержатся артикулы:
<td>
<p>артикул</p>
<p><strong>9AW#-044061-2000</strong></p>
<p class="replacement-style">старый артикул</p><p><strong>9AWA-044061</strong></p> </td>
Написал такой скрипт:
# parse.py
from pathlib import Path
from bs4 import BeautifulSoup
htmlFilt = []
htmlfAll = []
htmlf = "D:\ART\CFORCE1000\pages\cf1.html"
openedhtml = open(htmlf, "r")
contents = openedhtml.read()
soup = BeautifulSoup(contents, "html.parser")
htmlfAll = soup.findAll('div', class_="detail_list")
print (htmlfAll)
for data in htmlfAll:
if data.find('strong') is not None:
htmlFilt.append(data.text)
print (htmlFilt)
Но на выходе получается набор html кода. Нужные мне данные находятся между <strong>-ами, битый час не могу понять почему при выполнении
for data in htmlfAll:
if data.find('strong') is not None:
htmlFilt.append(data.text)
у меня ничего не выходит. Помогите пожалуйста
Ответы (2 шт):
Автор решения: Сергей Ш
→ Ссылка
from bs4 import BeautifulSoup
contents = '''<td>
<p>артикул</p>
<p><strong>9AW#-044061-2000</strong></p>
<p class="replacement-style">старый артикул</p><p><strong>9AWA-044061</strong></p> </td>
'''
soup = BeautifulSoup(contents, "html.parser")
# 1
data = soup.find('strong')
if data:
print(data.text)
# 2 Python 3.8 +
if data := soup.find('strong'):
print(data.text)
Автор решения: inventor
→ Ссылка
После долгих мучений и одной бессонной ночи c ведрами кофе у меня получилось это:
from bs4 import BeautifulSoup
# Открываем HTML-файл и создаем объект BeautifulSoup
with open(*path*) as file:
soup = BeautifulSoup(file, 'html.parser')
# Находим все элементы с классом 'detail_list' по всему HTML-файлу
divs = soup.find_all('div', class_='detail_list')
# Инициализируем списки для новых и старых артикулов
new_articules = []
old_articules = []
# Проходим по каждому элементу 'div' с классом 'detail_list'
for div in divs:
# Находим все строки таблицы внутри текущего 'div'
rows = div.find_all('tr')
# Проходим по каждой строке таблицы, извлекаем нужные артикулы и добавляем их в соответствующие списки
for row in rows:
# Находим ячейку со значениями артикулов
articule_cell = row.find('td')
if articule_cell:
new_articule = articule_cell.find('strong')
old_articule = articule_cell.find(class_='replacement-style')
if new_articule:
new_articules.append(new_articule.text)
if old_articule:
old_articules.append(old_articule.find_next('strong').text)
# Выводим списки новых и старых артикулов
print("Список новых артикулов:")
for articule in new_articules:
print(articule)
print("Список старых артикулов:")
for articule in old_articules:
print(articule)