Как извлечение атрибута тега выполнить в цикле?
Как, используя beautifulsoup, извлечь значение атрибута тега и запустить всё в цикле?
Запуская поодиночке - всё приходит, в цикле - нет
from bs4 import BeautifulSoup
import codecs
f = codecs.open("ZHVACHKA.html", 'r', 'utf-8')
html = f.read()
soup = BeautifulSoup(html, "lxml")
products = soup.findAll("div", class_="tovar")
data = [products]
#product_name = soup.find(class_="tovar-schet").find("p") #вытащил значение из тега по атрибуту
#product_price = soup.find("div", class_="tovar-price")[0].text #вытащил цену
#на всякий случай решил поставить обработку в случае изменения разметки сайта
#запускаю цикл на сбор всех данных по классу и атрибуту
for product in products:
#на всякий случай решил поставить обработку в случае изменения разметки сайта
try:
product_name = product.find("p") # вытащил значение из тега по атрибуту
product_price = product.text # вытащил цену
print(data)
except Exception as ex:
print(ex)
Запускаю поодиночке - всё работает, но как только пытаюсь запустить всё в цикле - приходит какая-то каша
Ответы (1 шт):
Автор решения: Jack Owest
→ Ссылка
Код содержит ошибку в цикле извлечения значений атрибутов тегов, попробуйте изменить блок try..catch на следующий:
try:
product_name = product.find("p").text # вытащил значение из тега по атрибуту
product_price = product.find("div", class_="tovar-price").text.strip() # вытащил цену
print("Product name:", product_name)
print("Product price:", product_price)
except Exception as ex:
print(ex)