This is what I tried with Java + Selenium and it sort of worked:
System.out.println(driver.findElement(By.xpath("//li[@class='cntanr'][1]//h2//span[@class='lng_cont_name']")).getText());
System.out.println(driver.findElement(By.xpath("//li[@class='cntanr'][1]//p[@class='contact-info ']")).getText());
System.out.println(driver.findElement(By.xpath("//li[@class='cntanr'][1]//p[@class='address-info adinfoex ']")).getText());
System.out.println();
System.out.println(driver.findElement(By.xpath("//li[@data-cn='Pat-a-Cake']//h2//span[@class='lng_cont_name']")).getText());
System.out.println(driver.findElement(By.xpath("//li[@data-cn='Pat-a-Cake']//p[@class='contact-info ']")).getText());
System.out.println(driver.findElement(By.xpath("//li[@data-cn='Pat-a-Cake']//p[@class='address-info adinfoex ']")).getText());
System.out.println();
System.out.println(driver.findElement(By.xpath("//li[@data-cn='Chef Bakers']//h2//span[@class='lng_cont_name']")).getText());
System.out.println(driver.findElement(By.xpath("//li[@data-cn='Chef Bakers']//p[@class='contact-info ']")).getText());
System.out.println(driver.findElement(By.xpath("//li[@data-cn='Chef Bakers']//p[@class='address-info adinfoex ']")).getText());
Although, the phone number isn't showing in the output because it's not a text from and sort of custom CSS based icon.
So maybe you can work around this in some way to get the desired output using Python by adding your logic and loops.