Создание списка артикулов из 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)
→ Ссылка