Почему генератор yield начинает работу с последней страницы сайта?
data = soup.find_all('div', class_= 'col-lg-4 col-md-6 mb-4')
Ты перезаписываешь data на каждой итерации цикла, конечно там остаётся только последнее записанное значение. Совмести оба цикла внутри get_url() в один, иначе нет особого смысла в yield.
Ну так Вы же в своем коде прошлись до 8 страницы, и генератор возвращает данные из неё.