Home > Net >  Python Selenium: unable to reach particular image in a flyer to scrape text
Python Selenium: unable to reach particular image in a flyer to scrape text

Time:02-08

I am trying to scrape this website: enter image description here

j = 1

for i in prdcts:
    driver.execute_script("arguments[0].scrollIntoView();", i)
    i.click()
time.sleep(3)
print(i)
# print(driver.page_source)

i = 1
while True:

    try:
        button_link_to_text = '/html/body/flipp-router/flipp-publication-page/div/flipp-sfml-component/sfml-storefront/div/sfml-linear-layout/sfml-flyer-image[{}]/div/button[{}]'.format(j,i)
        button = driver.find_element_by_xpath(button_link_to_text)
        print(button.get_attribute("aria-label"))
        i =1
    except:
        break
j =1

CodePudding user response:

Try this

from selenium.webdriver.common.action_chains import ActionChains
import time
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.maximize_window()
driver.get('https://www.longos.com/flyers')
time.sleep(5)

iframe = driver.find_element_by_xpath('//iframe[@]')
driver.switch_to.frame(iframe)
eleme = driver.find_element_by_xpath('//input[@id="postal-input"]')
eleme.send_keys("M5B0B7")
eleme = driver.find_element_by_xpath('//button[@id="submit-postal-code"]').click()
time.sleep(2)
eleme = driver.find_element_by_xpath('//button [@aria-label="Select Elizabeth 111 Elizabeth Street Toronto ON, distance from store is <1 km"]').click()
driver.switch_to.default_content()
time.sleep(5)
iframe = driver.find_element_by_xpath('//iframe[@]')
driver.switch_to.frame(iframe)
prdcts = driver.find_elements_by_xpath('//sfml-flyer-image//button')
print (prdcts)
for i in prdcts:
    driver.execute_script("arguments[0].scrollIntoView();", i)
    print(i.get_attribute("aria-label"))
    
    time.sleep(3)
    print(I)

and don't forget to switch back to ] this frame to get the product details.

the main thing is you need to switch the iframes and get into view to interact with that element

  •  Tags:  
  • Related