Вопрос

У меня есть страница с js. Мне нужно получить DOM после того, как JS выполняется в веб-странице. JS вставляет текст в Div с именем «SDL». Мне нужно получить ценность между. Значение не может быть проанализировано в источнике JS, он генерируется JS. Как это сделать? Извините за мой английский.

Это было полезно?

Решение

Дом открыт (по крайней мере, в PYQT> = 4.7.4)

document = webview.page().currentFrame().documentElement()
document.findAll("a") 
...

http://www.riverbankcomputing.co.uk/static/docs/pyqt4/html/qwebframe.html.

http://www.riverbankcomputing.co.uk/static/docs/pyqt4/html/qwebelement.html.

Другие советы

В Python вы можете использовать Призрак, который является открытым исходным кодом и доступна от GitHub. Это обертка Python вокруг взлома PYQT4 + Webkit, который работает довольно хорошо. Вы можете просто сделать

import ghost
g = ghost.Ghost()
g.open('http://stackoverflow.com/')

Сейчас g.content Относится к документу, после рендеринга.

Вы также можете оценить JS в документе с evaluate Метод, и это вернет значения JS.

Призрак также легко обнажает объекты PYQT, чтобы вы могли сделать вещи в Ghost Объект, который призрак не реализует, и пройдет.

Я не могу вспомнить точно, но я думаю, что что-то вроде

g.main_frame.setContent('<b>Hello World</b>')

можно использовать для установки документа, в то время как

g.content = '<b>Hello World</b>'

бросает один. Это берет немного укрощения, но не займет много времени, чтобы заставить его работать, как вы этого хотите.

Документы призраки сосут, но источник - это один файл и довольно объяснительный. Я использую призрак, и все в порядке. Просто не создавайте более одного Ghost объект, иначе он имеет тенденцию разбивать все.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top