pagetakaBlog

最近リフォームと鳥取県日南町の記事多め。写真、PC、ネット等の話題も

Python:SeleniumをつかったWebスクレイピングでの失敗事項(2)。

Webスクレイピングするときのロジック、フロー制御で泣く

Windows10(64)+Python3.7+Seleniumという環境でVSCodeを使ってポチポチと打っている、70sが近づいている爺です。

サイト内検索を自分の「はてブ」で一応できるようになりました(≒妄想)。失敗続きでした。その1はひとつ前の記事に書きました。
pagetaka.hatenablog.jp

今回は、その2でロジックというかフロー制御の失敗記です。

検索結果、次のページなどの有無

  1. 自分が原稿書いている「はてブ」なのでサイト自体が存在しないということは考えずに済みそう
  2. 検索語を入力しクリックしても「該当なし」「記事はありません」などという場合がある
  3. 検索ヒットしたが、何ページあるかわからない

単純に「検索」しても入口からしていろんなことが起こりそうです。「次のページ」表示などがなくなったらページめくり(click)操作が不要ですが、それで作業終了で大丈夫かどうか。つまり、「次のページ」表示はないけど何件かヒットしたWebページのタイトルがリンク付きで表示されているけど、それは取り込んだか、というようなことがありそうです。

実際に見逃し、直したこと

記事見出しとそのリンク(URL)を取得しようという単純な作業ですが、前項の通りでフロー制御をどうする、と悩みました。

実際に失敗し、途中で見直し、おかしいことに気づいて、修正したのは次のようなことでした。

  • 1回目の検索結果表示頁の必要要素を取得しないうちに頁遷移(click)していた
  • 「次のページ」有無を繰り返しの条件にしたら、「次のページ」がない最後のページの必要要素取得を見落とした
  • 記事見出しのリスト、同リンク先のリストのふたつを作成した後、ひとつのリストにまとめるのにチョットあたふたした。「for i in zip(*data_source)」の「zip」の使い方を見つけるまで時間がかかりました。