ふくだ学習録とは?
ふくだが学習したことの備忘録。
目に見える形で残すことによってやる気を出す個人的な作戦です。
他人に見せるように書いているわけではないので、すごく読みにくいです。
読了した本
データベースエンジニア養成読本 [DBを自由自在に活用するための知識とノウハウ満載!]
ゼロから作るDeepLearning
PHPフレームワーク CakePHP 3入門
SQLアンチパターン
Docker入門
今読んでいる本
なし
アプリ制作
WebDriverWaitについて
seleniumは実行が早すぎるため、要素が表示される前にクロールしてしまう場合があり、クローリングが安定しない場合がある。WebDriverWait
関数を用いることにより、任意のHTMLの要素が特定の状態になるまで待つことができるようになるので、クローリングが安定する。
使い方は下記のような感じ。
def get_dom(query):
dom = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, query)))
return dom
WebDriverWait
の第一引数でWaitさせたいWebDriverを指定し、第二引数でタイムアウトさせる秒数を設定する。
until
では「WebDriverをWaitさせ続け条件」を記載する。上の例ではquery
で渡されたcssセレクタを持っているものが対象になる。
EC
はexpected_conditionsをエイリアスで呼び出しており、presence_of_element_located
関数でHTML要素の存在を確認している。この関数は何種類もあるので、設定したい条件に応じて別の関数を使用する。
Seleniumのコードを安定して動かすためにWaitを使って要素を待つ
動的に生成されるクラス名に対してのスクレイピング
動的に生成される静的なクラス名(ID名)の要素に対しては、スクレイピングで情報取得できるようになった。
ただ、動的に生成され、かつクラス名(ID名)も動的に生成される(毎回変わる)要素に関しては取得がうまくいかない。
次は下記の2つの方法を試してみる。
①固定IDで吐き出されるDOM要素からの相対パス指定。
②一定時間後にDOM全体をスナップショット(言葉遣いあってるかな?)して、その後解析
上記どちらがが良いのかな?っていう所感はある。
一旦は①を試してみて、難しそうならば②を試してみる。
(①で行けそうなんやけどなぁ)
今日の一言
早起き出来ひんくなってきた!あかん!朝型の体にする!