前提・実現したいこと
rubyのseleniumを使用したスクレイピングで、
記事の名称一覧を取り出してログに表示したいと思っています。
発生している問題・エラーメッセージ
記事名を取り出し表示することは問題ないのですが、
連続して取得するために、xpathに変数で数字を入れ上から順に取得しています。
下記のように取得してます。
ruby
1while true do 2 index = index + 1 3 news = driver.find_element(:xpath, "/html/body/div[3]/div[1]/div[2]/div[2]/div/table/tbody/tr[#{index}]/td[2]/a") 4 puts news.text 5 puts "------------------------" 6end 7
最後の行まで到達し、次の行の取得が出来なくなると下記のようなエラーが出ます。
ruby
1Backtrace:: no such element: Unable to locate elemen]t: {"method":"xpath","selector":"/html/body/div[3]/dt: {"method":"xpath","selector":"/hiv[1]/div[2]/div[2]/div/table/tbody/tr[393]/td[2]/a"div/table/tbody/tr[3Selenium::WebDr} (Selenium::WebDriver::Error::NoSuchElementError) mentError) 2 (Session info: chrome=79.0.3945.117)
上記のエラーをflseで取得することができればwhile文を停止させてループ処理から抜け出すことができるのでしょうか??
試したこと
if文にしたり、roopにしたり、break入れてみたりしたのですが、
上記のエラーが出た時にどう処理したらスマートなのかがわからず...
同じエラーの内容で検索しても、「そもそもxpathの書き方が間違っているよ」ばかりだったので、
知っている方がいらっしゃったら教えていただきたいです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/09 21:23
2020/01/10 08:38 編集