Webスクレイピングするときのロジック、フロー制御で泣く
Windows10(64)+Python3.7+Seleniumという環境でVSCodeを使ってポチポチと打っている、70sが近づいている爺です。
サイト内検索を自分の「はてブ」で一応できるようになりました(≒妄想)。失敗続きでした。その1はひとつ前の記事に書きました。
pagetaka.hatenablog.jp
今回は、その2でロジックというかフロー制御の失敗記です。
検索結果、次のページなどの有無
- 自分が原稿書いている「はてブ」なのでサイト自体が存在しないということは考えずに済みそう
- 検索語を入力しクリックしても「該当なし」「記事はありません」などという場合がある
- 検索ヒットしたが、何ページあるかわからない
単純に「検索」しても入口からしていろんなことが起こりそうです。「次のページ」表示などがなくなったらページめくり(click)操作が不要ですが、それで作業終了で大丈夫かどうか。つまり、「次のページ」表示はないけど何件かヒットしたWebページのタイトルがリンク付きで表示されているけど、それは取り込んだか、というようなことがありそうです。
実際に見逃し、直したこと
記事見出しとそのリンク(URL)を取得しようという単純な作業ですが、前項の通りでフロー制御をどうする、と悩みました。
実際に失敗し、途中で見直し、おかしいことに気づいて、修正したのは次のようなことでした。
- 1回目の検索結果表示頁の必要要素を取得しないうちに頁遷移(click)していた
- 「次のページ」有無を繰り返しの条件にしたら、「次のページ」がない最後のページの必要要素取得を見落とした
- 記事見出しのリスト、同リンク先のリストのふたつを作成した後、ひとつのリストにまとめるのにチョットあたふたした。「for i in zip(*data_source)」の「zip」の使い方を見つけるまで時間がかかりました。