Скребок с селеном

Я пытаюсь очистить этот сайт за список company names, code, industry, sector, mkt cap, etc В таблице с селеном. Я новичок в этом и написал ниже код:

 path_to_chromedriver = r'C:\Documents\chromedriver' browser = webdriver.Chrome(executable_path=path_to_chromedriver) url = r'http://sgx.com/wps/portal/sgxweb/home/company_disclosure/stockfacts' browser.get(url) time.sleep(15) output = browser.page_source print(output) 

Тем не менее, я могу получить теги ниже, но не данные в нем.

  <div class="table-wrapper results-display"> <table> <thead> <tr></tr> </thead> <tbody></tbody> </table> </div> <div class="pager results-display"></div> 

Я ранее также пытался BS4 соскрести его, но не смог. Буду признателен за любую оказанную помощь.

2 Solutions collect form web for “Скребок с селеном”

Результаты находятся в iframe – переключиться на него, а затем получить .page_source :

 iframe = driver.find_element_by_css_selector("#mainContent iframe") driver.switch_to.frame(iframe) 

Я бы также добавил, что таблица будет загружена:

 from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 10) # locate and switch to the iframe iframe = driver.find_element_by_css_selector("#mainContent iframe") driver.switch_to.frame(iframe) # wait for the table to load wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '.companyName'))) print(driver.page_source) 

Это вполне уместно. Что может быть проще всего, так это использовать вызов «find_elements» (обратите внимание, что это множественное число) и захватить все элементы <tr> . Он вернет список, который вы можете проанализировать с помощью элементов поиска (особых) вызовов для каждого из них, но на этот раз найдите каждый элемент по классу .

Возможно, у вас проблемы с синхронизацией. Я заметил, что данные, которые вы ищете, загружают ОЧЕНЬ медленно. Вероятно, вам придется ждать этих данных. Лучший способ сделать это – проверить его существование до тех пор, пока он не появится, а затем попробуйте загрузить его. Найти вызовы элементов (опять же, обратите внимание, что я снова использую множественное число) не вызовет исключения при поиске элементов и не найдет их, он просто вернет пустой список. Это достойный способ проверить, что данные появятся.

  • Метод SendKeys для AutoIT, сценарий оболочки или pywinauto lib не работает
  • Использование селена в календаре выбора даты
  • Скребок экрана с селеном 8
  • Python Selenium Отправить ключи Предоставление предупреждения о размере
  • Как я могу установить прокси с аутентификацией в selenium chrome веб-драйвер, используя python
  • Как я могу получить html-контент, написанный JavaScript с помощью Selenium / Python
  • Можно ли установить временной интервал для теста Селена?
  • Selenium send_keys не работает, если input type = "number"
  • Python - лучший язык программирования в мире.