如何在Ubuntu中安装pythonwebkit和pywebkitgtk?
我刚开始使用Ubuntu系统。
我想在Ubuntu上安装pythonwebkit和pywebkitgtk,但我尝试了很久。虽然我能安装上,但当我执行这段代码时,
#!/usr/bin/env python
import pygtk
pygtk.require("2.0")
import gi
from gi.repository import WebKit as webkit, Gtk as gtk
dir(gtk)
print dir(gtk.WindowType)
init_string="""
<div id="testing">testing</div>
<div><button id="link">CLICK ME</button>
"""
class Browser:
# Ventana del programa
def __init__(self):
self.window = gtk.Window(type=gtk.WindowType.TOPLEVEL)
self.window.set_position(gtk.WindowPosition.CENTER)
self.window.set_default_size(800, 600)
self.window.fullscreen()
self.window.connect("destroy", self.on_quit)
# Un vBox, en la parte de arriba hay una caja para ingresar
# la direccion web, y abago se muestra la pagina
vbox = gtk.VBox()
# La parte en donde se muestra la pagina que se visita (con scroll incluido)
self.scroll_window = gtk.ScrolledWindow()
self.webview = webkit.WebView()
print dir(self.webview)
#self.scroll_window.add(self.webview)
# Unimos todo en el vBox
#vbox.pack_start(self.url_text, True, False, 0)
# El expand=False al empaquetarlo es para que el entry no ocupe media pantalla
#vbox.pack_start(self.scroll_window, True, True, 0)
#self.window.add(vbox)
self.window.add(self.webview)
self.window.show_all()
self.webview.load_string(init_string, "text/html", "utf-8", '#')
doc = self.webview.get_dom_document()
self.webview.connect('document-load-finished', self.onLoad)
print doc
print dir(doc)
def onLoad(self, param1, param2):
print "STARTING"
doc = self.webview.get_dom_document()
div = doc.get_element_by_id('testing')
print div
print dir(div)
print div.get_inner_html()
div.set_inner_html('DYNAMIC TEXT')
link = doc.get_element_by_id('link')
#print link
#print dir(link)
link.connect('click-event', self.onClick, link)
#div.connect_object('click-event', self.onClick, link)
def print_childs(self, elem):
childs = elem.get_child_nodes()
for c in range(childs.get_length()):
i=childs.item(c)
#print dir(i)
print "%s - %s\n" %(i.get_tag_name(), i.get_inner_html())
self.print_childs(i)
def onClick(self, p1, p2, p3=None):
print "CLICKED - %s %s %s " % (str(p1), str(p2), str(p3))
#return False
def on_quit(self, widget):
gtk.main_quit()
if __name__ == "__main__":
browser = Browser()
try:
while True:
gtk.main_iteration()
except:
gtk.quit()
print "BAILING OUT!"
出现了问题:“doc = self.webview.get_dom_document()”这行代码无法通过,错误提示是webview没有get_dom_document这个属性。
我该怎么办呢?我必须访问DOM树!
我知道我安装pythonwebkit或pywebkitgtk的方式有问题,但我不知道怎么做才对。
有没有人能帮帮我?
1 个回答
0
在解释器中运行你的 import
指令。
如果这样做没有出现任何错误(根据你说的错误来源来看),那么问题很可能不是出在库的安装上,也和Ubuntu没有关系。
Python并不是在说“嘿,这个安装得不对”,而是在说“嘿,你处理这个对象的方式不对!你想要的那个功能不存在!”。
再仔细检查一下相关的文档,看看怎么获取DOM树。
编辑 -- 这是我通过快速搜索得到的信息。
def _view_load_finished_cb(self, view, frame):
doc = frame.get_dom_document()
nodes = doc.getElementsByTagName('body')
body = nodes.item(0)
你正在尝试从一个不提供DOM树的对象中访问它。