実現したいこと(すでに何度か成功している)と問題
ログインが必要なSNSでスクレイピングを行い、特定のタグがついた投稿に対して自動で「いいね」を行いたいと思っています。
MacOSで、Capybara, Poltergeist, Phantomjsを使用しています。詳しいバージョンなどは下に書きますのでご確認ください。
すでにスクリプトは完成していて、1日1回 * 5日間ほどスクリプトを実行しました。
その際に、自動で「いいね」ができていることは目視で確認できました。
が、昨日突然、
The element you are trying to interact with is either not part of the DOM, or is not currently visible on the page (perhaps display: none is set). It's possible the element has been replaced by another element and you meant to interact with the new element. If so you need to do a new 'find' in order to get a reference to the new element. (Capybara::Poltergeist::ObsoleteNode)
が出て実行が成功しなくなってしまいました。
エラーと関係あるのかは分かりませんが、上のエラーが出ると同時に、訪問先のサイトのcssと画像が読み込めなくなったようです。
自分がChromeで確認するとデザインは乱れていないのですが、Capybaraのメソッドでsave_screenshotすると、明らかにhtmlしか読み込まれていないことがわかります。
上に会員登録 ログイン という文字が出ていますが、本来はdisplay: none;
となっているもので、ログインができていることは確認済みです。
エラーの原因の推測
htmlさえ読み込めていればclass, id属性と.text
や.value
などをfind
して処理が成功すると私は思うのですが、どうやらそうでもないようです。
訪問先のSNSからBANされたのかと思い(但しsleep処理はきちんとしているのでサーバーに大きい負担はかけていないはずです)、アカウントを新しく作り直して試してみたりIPアドレスを変えてみたりしたのですが、以上の現象は改善しませんでした。
また、私ごとですが家のWifiが最近遅いのでcssと画像が読み込まれていないのかなと思いましたが、同様のことを他のサイトで試してみたところスクショが正常でしたので、スクリプトには問題がないと思います。
poltergeistというドライバからのアクセスを制限されている、という可能性もなきにしもあらずかなと思うのですが、user agentを指定しておりますし、一体そんなことができるのかは分かりません…。
バージョン
$ ruby -v ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16] $ gem list ... capybara (2.18.0) poltergeist (1.17.0) ... $ phantomjs -v 2.1.1
このような経緯で、このエラーの解決策が全く見出せないのですが、どなたか助言をいただけませんでしょうか。
ご回答をお待ちしております。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/24 06:11 編集