Pyqtwebkit и Java Script
Вопрос
У меня есть страница с 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
объект, иначе он имеет тенденцию разбивать все.