自動購入Bot作成したうえでなるべく早く動かしたいので検証してみた。
備忘録として乗せる
インターネットの回線次第でも検証してみる。
誰かのためになると幸いです。
目次
比較のためのコード(Chrome用)
a = [1,2,3,4,5]
def main():
driver.get('https://www.google.co.jp')
driver.find_element_by_name("q").send_keys('selenium')
driver.find_element_by_name("q").submit()
driver.get('https://www.google.co.jp')
for num in a:
driver = webdriver.Chrome('chromedriver',options=options)
wait = WebDriverWait(driver, 10)
driver.set_window_size(1295,722)
start = time.time()
main()
elapsed_time = time.time() - start
driver.quit()
print(str(num)+"回目")
print ("elapsed_time:{0}".format(elapsed_time))
このコードにした理由は、第一に文字入力があるからです。
「send_keys」の遅さを知りたい。
最後にまたURLに飛んでいるのは画面遷移したかったためです。
どこかクリックしたかったけど毎回クリックさせるのも嫌だったのでこうしました。
毎回ブラウザを起動していますが、計測部分はmainの部分だけです。
主な比較内容は目次を見てもらえればと思います。
また、ネット回線の問題もあるため各5回ずつ行いその平均で比較していきます。
headlessとunheadlessの比較
ここでは単純にheadlessとunheadlessの比較を行います。
結果は以下のようになります。
意外だったんですが、Headlessのほうが遅いんですね。
GUIがない分読み込みが早いなど言われていますが、実際は遅いようです。
その他、起動オプション、UA
普段自分が使ってるオプション全部ありなしでやっていきます。
なしの時は先ほどのデータを使います。
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--disable-extensions')
options.add_argument('--proxy-server="direct://"')
options.add_argument('--proxy-bypass-list=*')
options.add_argument('--blink-settings=imagesEnabled=false')
options.add_argument('--lang=ja')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument("--log-level=3")
options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
options.page_load_strategy = 'eager'
では、結果を見てみましょう
オプションを入れると目に見えて早くなりましたね。
「page_load_strategy」これでページの読み込みの設定を変えています。
以下に書いてあります。
https://www.selenium.dev/documentation/en/webdriver/page_loading_strategy/
起動オプションについては以下のサイトを見てもらえればと思います。
http://chrome.half-moon.org/43.html
sendkeysとJavaScript
以下の二つの比較になります。
入力をJavaScriptに任せてみます。
driver.find_element_by_name("q").send_keys('selenium')
driver.execute_script("document.getElementsByName('q')[0].value='selenium'")
では、結果を見てみましょう。
気持ち早くなりましたね、ですが有り難いです。
以前はSend_keysをつかっていましたが、たまにめっちゃ遅いときあったので文字の入力はJavaScriptを使うのがいいかと思いました。
Firefox、Chromeの比較
ここで「Firefox」と「Chrome」での検証を比較していきます。
めんどくさかったので、普段使っていないFirefoxは最後だけの検証にします。
Firefoxは速いとは聞いていましたがChromeより遅かったですね。
これからもChromeを使いたいと思います。
回線問題
ポケットWifiと有線回線で比較していきます。
まずは以下のサイトで速度を確認します。
10倍近くの差が出てますね。
では、これでどれだけ変わるでしょうか?
かなり遅くなりましたね、
やっぱり回線の速さは大事ですね。
以下のように光回線を検討してみてはいかがでしょうか?
当サイト限定!最大45,000円キャッシュバック!【光マッハ】
最後に
いかがでだったしょうか?
結局はネット回線次第ってことにはなりますがちょっとの工夫で少しでも早くできたと思います。
正直、調べていく中で自分にはもうこれ以上は早くできないと感じました。
Botを作成したらできるだけ早くしたいと思います。
少しでも参考になればと思います。
youtubeを始めてみました。
youtubeを始めてみました。
https://www.youtube.com/channel/UC-sjs4cFaHmSFIi2x_u_qDw
これからSeleniumを用いたBotの作成できるように動画をとっていくつもりです。
質問などコメントいただけると今後改善できるのでありがたいです。
ライポケのbotで最初のページの確認ボタンがexecute_scriptでクリックできなくて困ってるのですが、解決策ご存知でしたら教えていただけないでしょうか。
以下のコードが動かない形になります。
driver.execute_script(“arguments[0].click();”, driver.find_element_by_id(‘submit’))
#これだとクリックできる
driver.find_element_by_id(‘submit’).click()
driver.execute_scriptはJavaScriptを実行するコードになります。
driver.find_element_by_idはSeleniumでの要素指定になるので実行できません。
JavaScriptで書いてみてください。