如何在ubuntu中安装pythonwebkit和pywebkitgtk?

如何在ubuntu中安装pythonwebkit和pywebkitgtk?,python,dom,webkit,Python,Dom,Webkit,我是一个使用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_

我是一个使用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!"
#/usr/bin/env python
进口pygtk
pygtk.要求(“2.0”)
导入gi
从gi.repository将WebKit作为WebKit导入,将Gtk作为Gtk导入
处长(gtk)
打印目录(gtk.WindowType)
init_string=“”
测试
点击我
"""
类浏览器:
#计划文塔纳酒店
定义初始化(自):
self.window=gtk.window(type=gtk.WindowType.TOPLEVEL)
自。窗口。设置位置(gtk。窗口位置。中心)
self.window.set\u默认大小(800600)
self.window.fullscreen()
self.window.connect(“销毁”,self.on_退出)
#联合国难民署,在安格尔省的一部分
#在帕吉纳的博物馆里,你可以看到一幅美丽的图画
vbox=gtk.vbox()
#参观博物馆的地方(包括卷轴)
self.scroll_window=gtk.scrolled window()
self.webview=webkit.webview()
打印目录(self.webview)
#self.scroll\u window.add(self.webview)
#艾尔沃克斯托多大学
#vbox.pack\u start(self.url\u文本,真,假,0)
#El expand=虚假的媒体报道
#vbox.pack\u start(self.scroll\u窗口,True,True,0)
#self.window.add(vbox)
self.window.add(self.webview)
self.window.show_all()
self.webview.load_字符串(init_字符串,“text/html”,“utf-8”,“'#')
doc=self.webview.get\u dom\u document()
self.webview.connect('document-load-finished',self.onLoad)
打印单据
打印目录(文档)
def onLoad(自身、参数1、参数2):
打印“开始”
doc=self.webview.get\u dom\u document()
div=doc.get\u element\u by\u id('测试')
印刷部
打印主任(部门)
打印分区获取内部html()
div.set_inner_html('动态文本')
link=doc.get\u element\u by\u id('link'))
#打印链接
#打印目录(链接)
link.connect('click-event',self.onClick,link)
#div.connect\u对象('click-event',self.onClick,link)
def print_childs(self,elem):
childs=elem.get\u child\u节点()
对于范围内的c(childs.get_length()):
i=儿童。项目(c)
#打印目录(i)
打印“%s-%s\n”%(i.get\u tag\u name(),i.get\u inner\u html())
自印儿童(一)
def onClick(自身、p1、p2、p3=无):
打印“已单击-%s%s%s”%(str(p1)、str(p2)、str(p3))
#返回错误
退出时的def(自我,小部件):
gtk.main_quit()
如果名称=“\uuuuu main\uuuuuuuu”:
browser=browser()
尝试:
尽管如此:
gtk.main_迭代()
除:
gtk.quit()
打印“救援!”
“doc=self.webview.get\u dom\u document()”无法通过,错误是webview没有get\u dom\u document属性。 我该怎么办?我必须访问dom树,请! 我知道我安装pythonwebkit或pywebkitgtk的方式有问题,但我做不好。
有人可以帮忙吗?

在解释器中运行您的
import
指令

如果这没有引发任何异常(正如我从你说的错误出现的地方收集的),那么问题很可能不是安装库,而与Ubuntu无关

Python并没有说“嘿,这个安装不正确”,而是说“嘿,你处理这个对象不正确!”!您想要达到的功能不存在

重新检查Apprapiate文档,并查看如何获取DOM树

编辑——我是通过谷歌的快速查询得到的

def _view_load_finished_cb(self, view, frame):
        doc = frame.get_dom_document()
        nodes = doc.getElementsByTagName('body')
        body = nodes.item(0)

您试图从一个不提供DOM树的对象访问DOM树。

您找到答案了吗?看起来GIR文件没有正确地将GetElementsById函数导出到python。