【スクレイピング】LINEのタイムラインをすべて取得してみる⑨

投稿数の取得を増やすとどんどん処理が重くなる上に一回のループが長くなることに気づきました(今更)

これまで、繰り返し部分を

の二重ループで動かして、一度のループで10個一気にスクレイピングするようにしていました。しかし、これではループの度に一番上からスクレイピングすることになっています。何故こうなっているのに気づかなかったというと、リストの処理で重複分を消してしまっていたからです…

そこで、10個一気にスクレイピングするスタイルは端数の処理のときも少し不便なので1ポスト1処理に変更したいと思います。
また、ついでにtime.sleepで処理を待っていた部分をwebdriverwait.untilを使って、jsによってスクロールで読み込まれた情報をロードする際の発生するラグを、画面が表示されるまで待てるようにします。

ループの修正

回数(要素の番号)のnと、いくつ処理するかのlimitを定義して、while文のみでループさせます。

これにより、一回のループで1個の要素を処理することができます。また、エラーが出たらbreakします。

新しい要素の読み込み

このようにして、10ポスト処理したら、ブラウザ操作で新たなデータを読み込ませます。何故10ポストかというと、このwebページが下にスクロールすると10個ずつ新たに読み込むからです。
また、WebDriverWaitの部分で、n+1があるかどうか(新しい10個の要素が読み込まれているかどうか)を判断し、trueになるまで最大10秒間待っています。

 







コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です