手っ取り早く python とか uwsc とか 自動化 とか

自動化までの道のりを答え付きで掲載

【ポイ活】 今更ながらの楽天WEB検索の自動化案その① 【Windows10】

 経緯としては元々UWSCInternet Explorerでツールを作成することが多く、上記のニュースが飛び込んできたためとりあえずよく使うツールから改修する必要があると考え、当記事の投稿に至った。

 

【検索ツールの仕様】

①指定の楽天IDでログイン

検索ワードリストを作成

③指定回数検索を繰り返す

 

単純なツールのように思えますが、楽天WEB検索ツールバーのインストール状態や、ブラウザによって挙動が違うので微調整に手間がかかりました。

今回は赤字部分の②検索ワードリスト作成pythonで実現してみました。

 

もちろん検索ワードは毎日固定しておいて同じワード検索の繰り返しでもよいのですが、それではあまりにお粗末すぎるので毎日検索ランキング等から自動生成させます。

検索上限回数は30回なので それより多めのリスト数を作成すれば問題ありません。

 

今回は下記のインストールをあらかじめ行ってください。

bat

pip install beautifulsoup4
pip install requests

 

対象となるサイトを複数用意してみました、どれでもお好きなものをご利用ください。

コード実行後.pyと同じディレクトリにword.txtが生成されます。

[価格.com]

python

#価格.com
import os
import sys
import random
import requests
from bs4 import BeautifulSoup

load_url = 'http://kakaku.com/keyword/'
html = requests.get(load_url)
soup = BeautifulSoup(html.content, 'html.parser')

array = ''
for element in soup.find_all('a'): 
if 'search_results' in str(element):
array = array + str(element.text) + '@@@'

array = array.split('@@@')
random.shuffle(array)

f = open(os.path.dirname(os.path.abspath(__file__)) + '\\word.txt', 'w', encoding='shift_jis')
for item in array:
f.write(str(item) + '\n')
f.close

 

# Python

# beautiful soup

# 楽天ポイント

【Vysor】 Redmi Note 9T で Androidリモート操作に手こずった話 【Xiaomi】

f:id:pyZiro:20210607140031j:plain



 

新しく手に入ったAndroidスマートフォン Redmi Note 9T が手に入ったので従来通りPCからリモート操作の設定を施した。

 

主にスマホゲームの自動操作のためである。

 

 Google検索で『Android 開発者オプション』と調べれば方法はいくらでも出てきますが、今回は Redmi Note 9TXiaomiスマートフォン) ではまった説明を記載する。

 

【PC側設定】

上記からご使用のOS(今回はWindows)のインストーラexe)をダウンロードします。

インストール後、下のようなアプリが表示されれば設定は終了。

f:id:pyZiro:20210606173958p:plain

 


Android側設定】

[設定]アプリを起動し、[バイス情報]へ進みます。

[MIUIバージョン]を7回タップ(連打)すると開発者向けオプションが有効になります。

[設定]アプリの最初に戻り[追加設定]を選択後、[開発者向けオプション]を選択します。

f:id:pyZiro:20210607140312p:plain

 

項目[USBデバッグ]を有効にします。

従来使っていた他社スマートフォンの場合以上で設定完了なのですが、結論を言うと[USBデバッグ]以外に[USB経由でインストール]と[USBデバッグ]の項目も同時に有効にしておいてください。

(セキュリティ面の警告が多数表示されますが、全て許可してください。)

f:id:pyZiro:20210607141625p:plain

 

上記を許可していないと以下のようなことが発生します。

 

[USB経由でインストール]

PC「AndroidVysorアプリがインストールされてないからUSB経由でインストールするよ。」

Android「USB経由インストールは許可していません!」

PC「アプリインストールに失敗しました、USB経由でスマートフォンは認識できるけどアプリがないから画面を移したり、操作したりができません。」

apk path failed (empty)) ← これが検索に引っかからなくて苦労した。。。

※直接プレイストアから事前にインストールしておく回避方法があります。

 

[USBデバッグ(セキュリティ設定)]

PC「Androidのキャプチャができたので、マウスで操作してみよう」

Android「USB経由操作は許可していません!」
 


 【設定の続き】

 次にPCとスマートフォンをUSBケーブルで接続します。

認識に問題がなければPC側のVysorアプリにスマートフォンの端末が表示されます。

問題なければ再生ボタンをクリックしましょう。

 

f:id:pyZiro:20210607144141p:plain

 

次にスマートフォン側に以下のような画面が表示されますので、許可してインストールを行ってください。(初回接続時のみ

f:id:pyZiro:20210607144433p:plain

 

以上で設定は完了です。

問題がなければPC画面上にスマートフォンの画面が表示され、操作も問題なく行えると思います。

 

f:id:pyZiro:20210607133237j:plain

無事PCからゲーム画面も操作することができました。

 

# Vysor

# Android

# Xiaomi

# 開発者向けオプション

【zip有】続・Python + Selenium で Chromium Edge の自動操作【全自動】


 

需要がありそうなので前回のツールのChromium Edge(以下Edge)版も作ってみた。

ChromeDriverと違い、python.exeと同じ階層に配置する必要はないがDriverの配置ディレクトリは同じにしたほうがわかりやすいため同じ動作としている。

 

EdgeDriverUpdate.zip

f:id:pyZiro:20210605144019p:plain

 

従来通り00a_verチェック.batを実行するだけで設定は完了です。

(問題なく動作すれば配置フォルダが表示されmsedgedriver.exeが存在することが確認できます。)

f:id:pyZiro:20210605144410p:plain

 

※自分で作っといて忘れるとかよくあるのでここからは備忘録も兼ねて処理の流れを記載

 

 00a_verチェック.bat

インストールされているブラウザのバージョンを出力後⇒メジャーバージョン取得

-DOSコマンド-
rem Chrome 32bit
dir /B /O-N "C:\Program Files (x86)\Google\Chrome\Application<#DBL> | findstr "^[0-9].*¥>
rem Chrome 64bit
dir /B /O-N "C:\Program Files\Google\Chrome\Application" | findstr <#DBL>^[0-9].*¥>
-Powershell-
# Chromium Edge
(get-item ($env:SystemDrive + "\Program Files (x86)\Microsoft\Edge\Application\msedge.exe")).VersionInfo.FileVersion

 

00b_WDダウンロード.bat

調べたメジャーバージョンからWebDriverをダウンロード(uwscWebDriver.uwsを使用)

-uwsc-
// Chrome
driver = WebDriverDownload.Chrome(ver)
// Chromium Edge
driver = WebDriverDownload.ChromiumEdge(ver)

 

00c_pyへコピー.bat

ダウンロードしたzipファイルを解凍⇒python環境変数PATHフォルダへ解凍されたexeファイルをコピー

-DOSコマンド-
rem python.exeのパスを表示(複数バージョン可)
py --list-paths

 

上記を連続で行い、環境設定を自動化しています。 

またブラウザ立ち上げ時のコードも書き方に違いがあるのでご注意ください。

 

-python-
# Chrome
driver = webdriver.Chrome()

# Chromium Edge
import sys
driver = webdriver.Edge(executable_path=sys.base_prefix + '\\msedgedriver.exe') # driber.exeのパスを指定

EdgeDriverUpdate.zip

# selenium
# python
# Chromium
# Microsoft Edge
# uwsc

【selenium】ChromeDriver使用後の残データがディスク領域不足を招く件【ゴミファイル】

最近selenium + Chromeデバッグを行っているとWindows10の通知でCドライブのディスク領域不足がよく表示されるようになった。

 

ちょくちょくメディアファイルを削除したりして領域を確保していたが、その都度表示されるので何か怪しいなと思い調査してみた。

 

「ブラウザのキャッシュかな?」と疑ってTempフォルダを調べると意外な物がそこに大量に存在していた。

結果から言うとChromeDriverが作成したディレクトリが今までの使用回数分残っていた。

 

f:id:pyZiro:20210531193214p:plain

scoped_dir*~」で始まるディレクトリが172個(約20GB)存在した。

 

ChromeDriverを使用したseleniumが正常終了せず途中で落ちたり、エラーが出たりするとフォルダが削除されないとありました。

作成中やデバッグ中はコードミスのエラーも多発するので上記のディレクトリはちょくちょく手動で消したほうが良いという結論に至ったため、下記に簡単なbatプログラムのコードを記載しておきます。

 

rem ChromeDriverDel.bat
echo off
cd /d %TMP%
del screenshot*.png
for /F %%a in ('dir /ad /b /w scoped_dir*') do rmdir /S /q %%a
pause

上記をメモ帳に記載して「〇〇〇.bat」という名前で保存すると使用できます。

 

# selenium

# Chrome

【zip有】Python + Selenium で Chrome の自動操作【全自動】

pyziro.hatenablog.com

 上記からの続きになります。

 

Pythonインストール後 且

pip install selenium

まで完了していればあとはブラウザのバージョンと一致するChromeDriverのダウンロードをして配置すればseleniumを利用可能です。(もちろんChromeはインストール済)

が、

結局ChromeDriverの取得先だったり、ChromeDriverの配置先だったりがご使用環境によって変わるため初学者の方だといまいちとっつきにくいと思います。。(思いました)

あんなものやこんなものを作ろうと思って意気込んだ矢先に、実行環境が用意できずやる気が削がれてしまうことも少なくないのでは。

 

さらにブラウザのメジャーバージョンがアップデートされてしまうとChromeDriverも更新(手動でバージョン選択)する必要があり、筆者のようなめんどくさがりはそのたびに「一緒に自動更新してくれや(関西弁)」と普通に感じる。

 

ChromeDriverUpdate

今回はそう言ったメジャーバージョンの調査や、ChromeDriverの配置等seleniumを動作させる環境をbatひとつで整えるようにしてみた。

 

エクスプローラキャプチャ

00b_WDダウンロード.bat00c_pyへコピー.batも表示しているが00aGCverチェック.batから連続で呼んでいるので叩く必要はない。

動作に問題なければ、動作テスト.batを実行するとGoogle Chromeが立ち上がる。

Google Chromeのアップデートがいつ行われるか確認が面倒な人は00aGCverチェック.batWindowsスタートアップにでも登録してください。

以上

 

あくまで今回は「python + uwsc + Chrome」の組み合わせで作ったがChromeFireFoxでもEdge(chronium)でも同じ動作は可能である。

もちろんそのブラウザ用にソースは書き直す必要があるが。(白目)

ChromeDriverUpdate

 お手にどうぞ 😛