Исходя из всего этого имеется смысл писать в БД?
При большой нагрузке - да, для кэширования.
Товары обновляются достаточно часто, может быть один и тот же товар у одного поставщика, но на разных складах.
А вот сомнительно, чтобы поставщик столь оперативно обновлял свой сайт. Чтобы имело смысл парзить сразу, как только пользователь пожелает узнать информацию о товаре.
Обычно учет ведется не на сайте, а в отдельной базе, в какой нибудь 1С. С сайтом она синхронизируется, например, раз в час.
А еще пользователи иногда просто обновляют страницу. Зачем тут же делать запросы к 10 сайтам поставщиков.
А еще пользователи зачастую ходят между несколькими товарами, выбирая какой-то из них. Зачем при многократном заходе на страницу товара раз в 5 минут сделанным - заново обращаться к 10 сайтам поставщиков.
Так что да, имеет смысл кэшировать в своей БД.
При получении запроса - см. не протухла ли информация о товаре. Если не протухла, то отдаем из базы сразу.
Если товар у поставщика удобен для парзинга в один проход (например, можно скачать один файл актуального прайс лиса, не нужно проходить по всему сайту по всем страницам) - имеет смысл не дожидаться посетителя вашего сайта, а парзить заранее и регулярно, скажем раз в час. Результат разумеется сохраняется в вашей БД.
Про Scrapy уже написали.