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

Я пытаюсь очистить этот сайт за список 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> . Он вернет список, который вы можете проанализировать с помощью элементов поиска (особых) вызовов для каждого из них, но на этот раз найдите каждый элемент по классу .

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

  • Как сохранить кеш в селене в цикле после обновления страницы?
  • Получение вывода console.log из Chrome с привязками API Selenium Python
  • Очистить с помощью BeautifulSoup с сайта, использующего разбиение на страницы AJAX с помощью Python
  • Selenium webdriver и unicode
  • Захват ответа AJAX с селеном и питоном
  • Задайте профиль предпочтений автоматической загрузки, используя selenium2library
  • Можно ли скрыть браузер в Selenium RC?
  • Исключение noSuchElement с использованием find_element_by_link_text, когда implicitly_wait не работает?
  • всплывающие окна python selenium disable os
  • python selenium не обновляет всплывающее окно url
  • Selenium webdriver send_keys () не работает должным образом
  •  
    Interesting Posts for Van-Lav

    Как захватить числа в середине строки? (Python)

    Разбирайте данные линии до тех пор, пока ключевое слово с pyparsing

    boost :: python Экспорт пользовательских исключений

    pip install pydot повышает значение SyntaxError

    Разделить строку по количеству символов

    Python – Как отделить пунктуацию от слов пробелом, оставляя только одно пространство между пунктуацией и словом?

    Какой порядок Python используется для импорта модуля?

    Удобный для хранения данных способ добавления поля в структурированный ndarray – без дублирования данных?

    Открывается приложение cx_freeze, которое быстро закрывается

    Обнаружение похожих изображений

    NaNs после слияния двух фреймов данных

    Как мне высмеять метод, который использует request.get в моем классе?

    Должен ли я использовать Пилоны или Пирамиду?

    Как преобразовать тему электронной почты из «? UTF-8? …? =» В читаемую строку?

    Tensorflow – Конвольтонная нейронная сеть с пользовательским набором данных НЕ УЗНАЕТ

    Python - лучший язык программирования в мире.