正常に動作するスクリプトがあります。
if __name__ == '__main__':
app = QApplication(sys.argv)
bot = GBot()
bot.search('hot tea', num=20)
if signal.signal(signal.SIGINT, signal.SIG_DFL):
sys.exit(app.exec_())
app.exec_()
search()を呼び出すと、プログラムが動作を開始し、Webサイトをロードします。
def _loadFinished(self, ok):
current_url = self.page().currentFrame().url().toString()
if str(current_url).endswith('.com/'):
self.home_search()
else:
self.get_links_text_from_page()
if self.count >= self.desired_number_of_results:
self.close()
ロードが1回終了すると、別の状態をチェックし、次に何をするかを決定します。最後に、プログラムが複数のWebサイトをロードした後。と呼ばれる変数に収集された目的のデータself.results
。
だから私の質問は、loadFinished()の条件をチェックすることによって、search()から結果を返す方法です。
search()
言い換えれば、loadFinishedが他のWebサイトをロードしないかどうかをチェックし、関数が目的の変数を返すようなアルゴリズムを考え出す必要があります。self.result = False
条件を変更してすべてを配置するloadFinished()
のではなく、別の変数を作成することを考えていました。その後、結果が得られます。しかし、それは機能しません...search()
while loop
return
探す()
def search(self, keyword, num=None, output=None):
self.keyword = keyword
if output is "json":
# need to return `self.results` ONLY after program finished. because before that,
# this variable is empty
self.load('somewebsite.com')
pass