Сайт для которого создавался этот код вот ---> gadget.kg
У меня не получается сделать так что-бы он принял html и начал делать проверку
Код в котором делаю тест
import unittest
from .transform import GadgetTransform
class TestExtractor(unittest.TestCase):
def test_data_products(self):
transform = GadgetTransform()
product_page = 'http://www.gadget.kg/catalog/search?q=xiaomi+redmi+note+7'
product_details = transform.get_data(html=product_page)
expection_product_details = [
{'Title': 'Мобильный Телефон Xiaomi Redmi Note 7 PRO (6+128Gb)', 'cost': '12.000 сом'},
{'Title': 'Мобильный Телефон Xiaomi Redmi Note 7 (6+64Gb)', 'cost': '10.400 сом'},
{'Title': 'Мобильный Телефон Xiaomi Redmi Note 7 (4+128Gb) EU', 'cost': '11.500 сом'},
{'Title': 'Мобильный Телефон Xiaomi Redmi Note 7 (3+32Gb) EU', 'cost': '10.000 сом'},
{'Title': 'Мобильный Телефон Xiaomi Redmi Note 7 (4+64Gb) EU', 'cost': '10.700 сом'}]
self.assertEqual(expection_product_details, product_details)
Код в котором происходит парсинг сайта
from bs4 import BeautifulSoup
class GadgetTransform:
def get_data(self, html: str) -> list:
soup = BeautifulSoup(html, 'html.parser')
items = soup.find_all('div', class_='hit__slide')
phone = []
for item in items:
price = item.find('span', class_='hit__slide__price')
if price:
price = price.get_text()
else:
price = ''
phone = [i for i in phone if i['cost'] != '']
phone.append({
'Title': item.find("h6", class_='hit__slide__title').get_text(),
'cost': price,
})
print(phone)