前提・実現したいこと
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 5end
最後の行まで到達し、次の行の取得が出来なくなると下記のようなエラーが出ます。
調べたこと
たとえば下記のxpathですが、
ruby
1news = driver.find_element(:xpath, "/html/body/div[3]/div[1]/div[2]/div[2]/div/table/tbody/tr[#{index}]/td[2]/a")
現在#{index}
の式展開が入っている箇所がワイルドカードにして、
これと同じ構造の要素が〇個存在しています。
という情報が取り出せれば、下記のようなループ処理で、
エラーが起こる要素を取得しないで回避できるかな?と思いました。
ruby
1while ele > count do 2 ~省略~ 3end
なので、同じ形状のxpathがいくつあるかを取得するすべを知りたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/10 01:05