Сделал исключения для парсера только на ConnectionError да и он плохо работает когда пытаюсь его проверить, просто возвращает пустоту а не текст который я хотел бы видеть.
Да и мне надо сделать исключения на пустоту P.S. когда пользователь ничего не ввел и хотел сделать еще исключение когда на сайте такого продукта нет,
Код где происходит формирование страницы сайта
import requests
url = 'http://www.gadget.kg/catalog/search?q='
class GadgetExtractor:
def get_product_link(self, name_list: list) -> str: # создаю ссылку поисковика
full_url = ''
for arg in name_list:
full_url += arg
if arg != name_list[-1]:
full_url += '+'
product_link = url + full_url
return product_link
def get_html(self, url: str) -> str:
try:
res = requests.get(url=url) # здесь беру html сайта
res.raise_for_status()
return res.text
except requests.HTTPError as error:
code = error.res.status_code
print('Ошибка', code)
exit()
except ConnectionError:
print('Плохой интернет')
exit()
Где происходит парсинг сайта
from bs4 import BeautifulSoup
class GadgetTransform:
def get_data(self, html: str) -> list:
soup = BeautifulSoup(html, 'html.parser')
if soup.find('div', class_='empty-cart'):
print(soup.find('div', class_='empty-cart').get_text())
exit()
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,
})
return phone
код где происходит вызов всех функций
from sys import argv
from .transform import GadgetTransform
from .extractor import GadgetExtractor
def main():
gadget_extractor = GadgetExtractor()
product_link = gadget_extractor.get_product_link(name_list=argv[1:])
product_page = gadget_extractor.get_html(url=product_link)
gadget_transform = GadgetTransform()
detal_of_product = gadget_transform.get_data(html=product_page)
print(detal_of_product)
if __name__ == '__main__':
main()