Учимся царапать селеном и Python - PullRequest
1 голос
/ 20 января 2020

Я учусь чистить селеном, но у меня возникают проблемы при подключении к этому сайту: http://www.festo.com/cat/it_it/products_VUVG_S?CurrentPartNo=8043720

не загружается содержимое сайта

Я хотел бы узнать, как подключиться к этому сайту для запроса изображений и данных

мой код прост, потому что я учусь, я искал способы установить соединение, но безуспешно

from selenium import webdriver
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile

ff_profile = FirefoxProfile()
ff_profile.set_preference("general.useragent.override", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.85 Safari/537.36")
driver = webdriver.Firefox(firefox_profile = ff_profile)
driver.get('http://www.festo.com/cat/it_it/products_VUVG_S?CurrentPartNo=8043720')
time.sleep(5)
campo_busca = driver.find_elements_by_id('of132')
print(campo_busca)

Ответы [ 3 ]

0 голосов
/ 20 января 2020

скачайте драйвер по этой ссылке и поместите его в папку, скопируйте полный путь и вставьте ниже

 FIREFOX_DRIVER_PATH = "driver_path"

 firefox_options = FirefoxOptions()

 #only if you dont want to see the gui else make is false or comment
 firefox_options.headless = True

 driver = webdriver.Firefox(firefox_options=firefox_options, executable_path=FIREFOX_DRIVER_PATH)
 driver.get('http://www.festo.com/cat/it_it/products_VUVG_SCurrentPartNo=8043720')
 time.sleep(3)

 campo_busca = driver.find_elements_by_id('of132')

 print(campo_busca)
0 голосов
/ 20 января 2020

Поскольку требуемый элемент находится в пределах <iframe>, поэтому для вызова извлечения атрибута src нужного элемента необходимо:

  • Индуцировать WebDriverWait для Нужный кадр должен быть доступен и переключиться на него .
  • Индуцировать WebDriverWait для желаемого visibility_of_element_located().
  • Вы можете использовать следующие Стратегии локатора :

    driver = webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
    driver.get('http://www.festo.com/cat/it_it/products_VUVG_S?CurrentPartNo=8043720')
    WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@id='CamosIFId' and @name='CamosIF']")))
    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//img[@id='of132']"))).get_attribute("src"))
    
  • Однако, как в одном из упомянутых комментариев @google, кажется, что опыт просмотра лучше с ChromeDriver / Chrome, и вы можете использовать следующее решение:

    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    driver = webdriver.Chrome(options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get('http://www.festo.com/cat/it_it/products_VUVG_S?CurrentPartNo=8043720')
    WWebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe#CamosIFId[name='CamosIF']")))
    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "img#of132"))).get_attribute("src"))
    
  • Примечание : необходимо добавить следующий импорт:

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • Вывод на консоль:

    https://www.festo.com/cfp/camosHtml/i?SIG=0020e295a546f45d9acb6844231fd8ff31ca817a_64_64.png
    

Здесь вы можете найти соответствующую дискуссию по Способы решения с #document под iframe

0 голосов
/ 20 января 2020

попробуйте это для получения дополнительной информации здесь

 FIREFOX_DRIVER_PATH = "your_geckodriver_path"
 firefox_options = FirefoxOptions()
 firefox_options.headless = True

 # set options as per requirement for firefox
 firefox_options.add_argument("--no-sandbox")
 firefox_options.add_argument("--disable-setuid-sandbox")
 firefox_options.add_argument('--disable-dev-shm-usage')
 firefox_options.add_argument("--window-size=1920,1080")
 driver = webdriver.Firefox(firefox_options=firefox_options, executable_path=FIREFOX_DRIVER_PATH)
 driver.get('http://www.festo.com/cat/it_it/products_VUVG_SCurrentPartNo=8043720')
 time.sleep(5)

 campo_busca = driver.find_elements_by_id('of132')

 print(campo_busca)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...