今回はKivyでURLRequestを送る方法について。
ポイントだけまとめておきます。
ゴールはこちら。
KivyでWEBページにアクセスしてHTMLデータを取得しています。
KivyのUrlRequestを完全に理解した。
アクセス成功時の処理と、戻り値のreqとresultsが肝なんだね!
めもめも…。これでbeautifulsoup使えば、GUIアプリでスクレイピングまがいのことができそう。#Python #Kivy
#スクレイピング
pic.twitter.com/Neges2NLFC— カシワバユキ@朝活エンジニア (@yuki_kashiwaba) 2019年1月11日
もくじ
ソースコード
def on_enter(self): req = UrlRequest('https://yukituna.com/', self.ok) def ok(self, req, results): print(req, results)
今回はウィジェットについては割愛して、処理のみ見ていきます。
上のコードはどちらもクラスメソッドとして作ってますので、このまま貼り付けても動作しません。
ご容赦ください。
まず1つ目の関数を見ていきます。
def on_enter(self):
req = UrlRequest(‘https://yukituna.com/’, self.ok)
KivyのUrlRquestオブジェクトのインスタンスを変数reqに格納しています。
このUrlRequestオブジェクトの引数がポイントになるので、次の項で紹介します。
次に、2つ目の関数です。
def ok(self, req, results):
print(req, results)
関数の呼び出し時に引数を指定していないので混乱しましたが、resultには、URLRequestインスタンスの戻り値的な形で、HTMLデータが格納されています。
こちらについても下の項で紹介します。
UrlRecestオブジェクトの引数
とりあえずドキュメントを参照しました。
UrlRequest
Kivyは日本語のソースが少なく、普及の妨げの一因になってるらしいですね。
やっぱり英語能力って、プログラミングを学ぶ上では非常に重要だと感じますねー。
ドキュメントより、リクエスト構築のための構文です。
from kivy.network.urlrequest import UrlRequest req = UrlRequest(url, on_success, on_redirect, on_failure, on_error, on_progress, req_body, req_headers, chunk_size, timeout, method, decode, debug, file_path, ca_file, verify)
引数多いですね…。
今回は基本的な使い方しかしないですので、最低限のurlとon_successのみ使用しています。
必須の引数はurlのみです。
urlは言わずもがな、アクセス先のURLを入れます。
デフォルトではGETメソッドでアクセスが行われるようです。
on_successは、URLへのアクセスが成功した際の処理を渡しておきます。
インスタンス生成時に処理も代入しておくのですね。
このon_successはコールバック関数で、URLにアクセスした結果は、resultsパラメータとして渡されます。
これが、先程のok(self, req, results)というメソッドの正体です。
使ってみると簡単ですね。
まとめ
KivyでGUIアプリケーションの開発にチャレンジしてからはや3日。
少しずつ実装力がついてきたように感じます。
あとは何か面白いアイデアさえ閃けば、そのアプリケーション開発に没頭できるのになと思います。