今回のエラーメッセージは、
NoSuchElementException : Message : no such element : Unable to locate element : {“method” : “css selector”, “selector” : “.srl”}
エラーが出ると、することは2つ。
1.Google翻訳で和訳する。
2.その和訳を(もしくはエラーメッセージをそのまま)ググる。
2.その和訳を(もしくはエラーメッセージをそのまま)ググる。
今回は、エラーメッセージをそのままググったら、
「teratail」に同じような質問をした人がいて、
1.レスポンス遅延で画面表示が遅い場合、待機時間を長くしてみる。
2.要素の指定方法が間違っている。指定の仕方が合っていても、ある条件下においてのみ表示される要素を指定していないか?を確認する。
2.要素の指定方法が間違っている。指定の仕方が合っていても、ある条件下においてのみ表示される要素を指定していないか?を確認する。
という回答があった。
1.は、
import time
from time import sleep
from time import sleep
とし、
browser.get(url.format(url_num))
のあとに、たとえば
time.sleep(5)
と、5秒の待機時間を設ける方法。
これは、
Webサービスに過度の負担をかけない礼儀でもあり、
エラー対応ではなく、あとで入れておきたい。
さらにいろいろ調べて、
ピンときたのが
「try-except文を使った例外処理」
だ。
つまり、
エラーが発生すると、そこで繰り返し処理が止まってしまうので、
エラーが発生したらいったんその繰り返し処理を止め、
次の繰り返し処理を実行する、
エラーが発生したらいったんその繰り返し処理を止め、
次の繰り返し処理を実行する、
というコードを書けばうまくいくと思うのだ。
えらそうに書いたが、
そんなコードを書く力はないので
ここからは
キカガク長期コースの先生に頼る。
質問すると、
すぐにコードが送られてきた。

exceptのあとにcontinue文か!(なんかスクショ小さい)
exceptのあとに
「例外発生時に行う処理」
を入れるのだが、
そこに、
continue文が組み込んであった。
これを実行するとエラー箇所は無視され、
最後までfor文が実行され、
16,422句のスクレイピングに成功!
pandasできれいに表示して確認。

pandasはデータ処理に必須!
今日はここまでとして、
haiku_df.to_csv(‘haiku_scraping2.csv’)
で、csvファイル(ファイル名: haiku_scraping2.csv)に保存。
スクレイピングはここでいったん終了し、
次回から、
いよいよ分散処理に入る。