2011-09-07 24 views
0

私は、JavaScriptに依存するものを取り除こうとしていますsite。それは私がコピーしてExcelにペーストしたくないエンティティ(実際には都市の名前)の単純なリストを持つ非常に基本的なサイトです。リストはjavascriptによって制御されているので、私はブラウザをエミュレートするためにQt4のようなものを使う必要があり、PySideを試しています。PySideでslotを呼び出すときにエラーが発生しました

私は(私はhereから適応しました)いくつかの非常に基本的なコードを開始しました:

#!/usr/bin/env python 

import sys 
import signal 
import argparse 

from PySide.QtCore import * 
from PySide.QtGui import * 
from PySide.QtWebKit import QWebPage 


class Crawler(QWebPage): 
def __init__(self, url, file): 
    QWebPage.__init__(self) 
    self._url = url 
    self._file = file 

def crawl(self): 
    signal.signal(signal.SIGINT, signal.SIG_DFL) 
    self.connect(self, SIGNAL('loadFinished(bool)'), self._finished_loading) 
    self.mainFrame().load(QUrl(self._url)) 

def _finished_loading(self, result): 
    file = open(self._file, 'w') 
    file.write(self.mainFrame().toHtml()) 
    file.close() 
    sys.exit(0) 

def main(): 
    app = QApplication(sys.argv) 
    args = get_args() 
    crawler = Crawler(args.url, args.file) 
    crawler.crawl() 
    sys.exit(app.exec_()) 

def get_args(): 
""" 
Command argument parser 

Returns structure: 
    args.url 
    args.file 
""" 

parser = argparse.ArgumentParser(description='Basic scraper') 
parser.add_argument('-u', '--url', dest='url', help='URL to fetch data from', default='http://www.google.com') 
parser.add_argument('-f','--file', dest='file', help='Local file path to save data to', default='data.txt') 

args = parser.parse_args() 
return args 


if __name__ == '__main__': 
    main() 

問題は、私は本当によくPySide/Qt4を知らない、です。このエラーが表示されます:

Error calling slot "_finished_loading" 

私はこれが何を意味するのかよく分かりません。これは、Qt4とPySideを理解するための長くて難しいプロセスに慣れることなく、私が克服できるものですか?これは簡単な修正ですか?

すべての入力いただきありがとうございます。

答えて

1

_finished_loadingsys.exit(0)QApplication.instance().exit()に置き換えてください。

0

_finished_loadingをスロットとして宣言しませんでした。このためには、このような@Slot()デコレータを使用する必要があります。

@Slot(str) 
def _finished_loading(self, result): 
    print(result) 

@Slot(int, int) 
def add(self, a, b): 
    print(a+b) 

などです。デコレータの引数は、期待される関数引数のPythonデータ型のコンマ区切りのリストです。

関連する問題