問題タブ [staleelementreferenceexception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 「次へ」ボタンをクリックして Selenium Web スクレイピングを行うと、値が重複する
私はセレンと BeautifulSoup を使用して、Web サイト ( http://www.grownjkids.gov/ParentsFamilies/ProviderSearch ) からデータをスクレイピングし、次のボタンをループでクリックしています。以前は StaleElementReferenceException に苦労していましたが、ループしてページ上の要素を再検索することでこれを克服しました。しかし、私は新しい問題に遭遇しました - 今では最後までずっとクリックすることができます. しかし、書き込み先の csv ファイルを確認すると、データの大部分は適切に見えますが、多くの場合、5 つのバッチ (各ページに表示される結果の数) で重複する行があります。
私が言いたいことの絵の例: https://www.dropbox.com/s/ecsew52a25ihym7/Screen%20Shot%202019-02-13%20at%2011.06.41%20AM.png?dl=0
これは、次のボタンを見つけようとするたびに、プログラムがページ上の現在のデータを再抽出するためだと思います。私の理解では、実際のスクレイピング部分は、次のボタンを見つけて大きなボタンに移動しようとする内側のwhileループから抜け出した後にのみ発生するため、なぜこれが起こるのか混乱しました。(私はこのことに比較的慣れていないので、これを正しく理解していない場合はお知らせください。)
さらに、プログラムを実行するたびに出力するデータは異なります (これは、過去に StaleElementReferenceExceptions が散発的な場所で発生していたため、エラーを考慮すると理にかなっています。この例外が発生するたびに結果が重複する場合は、さらに悪いことに、プログラムを実行するたびに結果の異なるバッチがスキップされてしまいます - 2 つの異なる出力からの結果を相互比較したところ、1 つの出力ではなく 1 つの出力に存在する結果がいくつかありました。他の。
何でも役に立ちます!将来のプログラミングを改善するために selenium/BeautifulSoup/python を使用した方法について他に推奨事項がある場合は、それをいただければ幸いです。
本当にありがとう!