私は初心者のPythonプログラマーであり、Python2.7でSeleniumプロジェクトに取り組んでいます。
私は一般的なスクレーパースクリプトを持っています。これは基本的に、アクセスするすべてのWebサイトで何をしたいのかを概説しています。ただし、取得したいデータの性質上、各サイトで同じコードを実行することはできません。各サイトは、独自の個別のコードを実行する必要があります。
私はifステートメントの内部をインポートすることによってこれを解決しようとしました、そしてこれは私が思いついた解決策です:
site = False
if source_website == "Website A":
from website_a import *
site = True
elif source_website == "Website B":
from website_b import *
site = True
else:
print "This is not an acceptable website!"
if site == True:
# main code block
driver = driver_setup(chrome)
driver.get(source_website_URL)
stuff_to_save = do_some_stuff(driver)
xml_file(stuff_to_save)
driver.quit()
ここで、モジュールwebsite_a
とwebsite_b
モジュールは両方とも、という名前の関数を持っておりdo_some_stuff
、それらがアクセスしているWebサイトに固有の処理を実行します。さて、これはほとんどの場合うまくいくようです。website_c
また、関数を使用して呼び出されるモジュールをプログラムしdo_some_stuff
、それを条件付きインポートに追加することを考えると、機能を任意の数のWebサイトに拡張できるようです。
だから、私の質問は、これは良い考えですか?このようなことをするためのより良い方法はありますか?
私は文字通り、このようなifステートメントの中にimportステートメントをラップする人を見たことがありません-そして一般的に、誰もそれをしていないようであれば、通常は正当な理由があります。