Форум сайта python.su
0
Здравствуйте. Нужно получить html-код со страницы. Но html-код с FireBug в FireFox отличается от html-кода, получаемого с помощью метода urllib.request.openurl() или просто просмотра html-кода страницы через браузер - не отображает некоторые “кнопки”.
Вопрос - почему не весь html-код отображается?
Отредактировано hdj (Ноя. 19, 2014 18:13:34)
Офлайн
25
Зайдите на сайт с выключенным js - вы увидете ту же картинку что и openurl
Офлайн
0
Спасибо, отключил, так и получилось.
Где можно почитать как получить html-код с обработанным JS?
(Наверно, если бы был элемент веббраузер, то его можно было бы подключить в невидимом режиме, загрузить в нем страницу и затем считать html-код.)
Офлайн
26
hdj
Спасибо, отключил, так и получилось.Где можно почитать как получить html-код с обработанным JS?(Наверно, если бы был элемент веббраузер, то его можно было бы подключить в невидимом режиме, загрузить в нем страницу и затем считать html-код.)
Офлайн
0
Ок, а селениум будет открывать старницы в браузере пользователя или можно это скрыть от глаз пользователя? Похоже нет.
Не могу найти функцию для получения html-кода страницы из загруженной селениумом страницы. Есть методы title и поиска элементов. А так чтоб весь html-код?
Отредактировано hdj (Ноя. 20, 2014 13:50:46)
Офлайн
25
hdjВам же html-код нужен, чтобы как раз найти элементы, так?
Есть методы title и поиска элементов
Офлайн
36
hdjpage_source
Есть методы title и поиска элементов. А так чтоб весь html-код?
Офлайн
0
s0rg, ну вообще задача - собрать определенные данные со страницы…
pyuser, спасибо. Уже накатал кое-что:
# Пробуем получить html-код с выполненным js, используя Selenium WebDriver. # innerHTML will return the inner HTML of this element, # which contains all HTML tags inside # http://yizeng.me/2014/04/08/get-text-from-hidden-elements-using-selenium-webdriver/ # http://stackoverflow.com/questions/7263824/get-html-source-of-webelement-in-selenium-webdriver # http://internetka.in.ua/selenium-webdriver-normalization/ print ('----- Загрузка html-кода с выполненным js с помощью Селениума') from selenium import webdriver from selenium.webdriver.common.by import By try: url = "http://***" wd = webdriver.Firefox() wd.get(url) s = wd.find_element(by=By.ID, value="***").get_attribute('innerHTML') ## s = wd.find_element_by_xpath("//html").get_attribute('innerHTML') wd.quit() except Exception as e: print("Неизвестная ошибка при загрузке и декодировании страницы в строку\n" + "Возможно сервер не доступен" + e.args) # Здесь надо прописать код по завершении работы приложения print ('----- Html-код с выполненным js получен')

Отредактировано hdj (Ноя. 21, 2014 16:31:48)
Офлайн
25
hdjОшибки, могут быть и в коде профессионалов
Я не профессионал, так что в моем коде могут быть везде ошибки, или он не оптимален.
hdjЧто значит ‘невидимым’? Скрыть окно или вообще процесс?
можно как-то сделать невидимым селениум браузер? (или какой другой)
hdjСудя по документации - нет.
встроенный метод в питоне WebBrowser - из него можно получить outerHtml?
hdjДавайте определим,, что и как вы собрались искать.
как более оптимально получать outerHtml
Офлайн
26
- wd = webdriver.PhantomJS() - это обычный браузер или что? Почему эта строчка вызывает ошибку?
Офлайн