2011-04-04 99 views
0

我是一位使用Ubuntu的新手。 我想在Ubuntu中安裝pythonwebkit和pywebkitgtk,但我已經嘗試了很長時間。甚至thongth我可以安裝,但是,當我EXCUTE此代碼,如何在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()」不能傳遞,該錯誤是網頁視圖不具有get_dom_document ATTR。 我該怎麼辦?我必須進入dom樹,請! 我知道我安裝pythonwebkit或pywebkitgtk的方式有問題,但我做不對。 有人可以幫忙嗎?

+0

您是否找到了答案?看起來像GIR文件不能正確地將GetElementsById函數導出到python。 – 2011-07-29 16:49:26

回答

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樹。