Найти - Пользователи
Полная версия: Не полностью отображается html-код для со страницы
Начало » Python для новичков » Не полностью отображается html-код для со страницы
1 2 3
hdj
Здравствуйте. Нужно получить html-код со страницы. Но html-код с FireBug в FireFox отличается от html-кода, получаемого с помощью метода urllib.request.openurl() или просто просмотра html-кода страницы через браузер - не отображает некоторые “кнопки”.

Вопрос - почему не весь html-код отображается?
s0rg
Зайдите на сайт с выключенным js - вы увидете ту же картинку что и openurl
hdj
Спасибо, отключил, так и получилось.
Где можно почитать как получить html-код с обработанным JS?
(Наверно, если бы был элемент веббраузер, то его можно было бы подключить в невидимом режиме, загрузить в нем страницу и затем считать html-код.)
ajib6ept
hdj
Спасибо, отключил, так и получилось.Где можно почитать как получить html-код с обработанным JS?(Наверно, если бы был элемент веббраузер, то его можно было бы подключить в невидимом режиме, загрузить в нем страницу и затем считать html-код.)

selenium, или можно выполнить js посредством PyExecJS + Node.js
hdj
Ок, а селениум будет открывать старницы в браузере пользователя или можно это скрыть от глаз пользователя? Похоже нет.

Не могу найти функцию для получения html-кода страницы из загруженной селениумом страницы. Есть методы title и поиска элементов. А так чтоб весь html-код?
s0rg
hdj
Есть методы title и поиска элементов
Вам же html-код нужен, чтобы как раз найти элементы, так?


pyuser
hdj
Есть методы title и поиска элементов. А так чтоб весь html-код?
page_source
hdj
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 получен')

И заметил, что html-код, полученный методом .page_source отличается от .get_attribute('innerHTML'): в тэгах параметры идут в другой очереди (например href раньше, чем другой). Может еще что-то. Так-то он более оптимален?
Я не профессионал, так что в моем коде могут быть везде ошибки, или он не оптимален.

У меня вопросы:
- почему так плохо с документацией: и с python 3 и методы selenium. То ли я плохо ищу, или надо англ. хорошо знать?
- можно как-то сделать невидимым селениум браузер? (или какой другой)
- wd = webdriver.PhantomJS() - это обычный браузер или что? Почему эта строчка вызывает ошибку?
- встроенный метод в питоне WebBrowser - из него можно получить outerHtml?
- как более оптимально получать outerHtml?

Теряюсь
s0rg
hdj
Я не профессионал, так что в моем коде могут быть везде ошибки, или он не оптимален.
Ошибки, могут быть и в коде профессионалов

Английский - это язык технической документации, так сложилось, знать его нужно обязательно.

hdj
можно как-то сделать невидимым селениум браузер? (или какой другой)
Что значит ‘невидимым’? Скрыть окно или вообще процесс?

hdj
встроенный метод в питоне WebBrowser - из него можно получить outerHtml?
Судя по документации - нет.

hdj
как более оптимально получать outerHtml
Давайте определим,, что и как вы собрались искать.
ajib6ept
- wd = webdriver.PhantomJS() - это обычный браузер или что? Почему эта строчка вызывает ошибку?

Драйвер такой, “невидимый”, надо установить сперва его
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB