[ad_1]
こんにちは、みんな。 Web サイトからコンテンツを取得しようとしています。HTML ページには複数のページのデータが表示され、各ページのコンテンツには 6 × 15 div 項目が含まれています。
これらの div 項目の下部には、 前のページ..ページ 1..ページ 2..ページ 3….次のページ.. のようなページ ラベルをリンクすると、これらのラベルの属性 ‘href’ は別の ‘location.href’ にリンクします。
F12 コンソールで JavaScript コードを作成して、これらすべての div 項目情報を取得したいと考えています。 それを機能させることが可能かどうかはわかりません。
私が知っていることは、BOM にはグローバル オブジェクト、ウィンドウがある、このグローバル オブジェクトのイベントを追跡していること、各ページのラベルをクリックしたときに新しいページが読み込まれたイベントをキャプチャしたいと考えており、DOM ドキュメントを使用して div アイテムを取得することです。
私が試したこと:
そのようなコード:
window.addEventListener('load', () => { //1.fetch div items //for(var item of document.querySelectorAll('div.item')) {} //2.find next page label and click //var next_page = document.querySelector('a.next'); //next_page.click(); });
最初のページ ラベルをクリックして、各ページ項目の更新ループをトリガーしようとすると、DevTool コンソールが新しいコンテキストに変更されたように見えますが、JS コードは機能しません。
BOM ウィンドウはグローバル オブジェクトであり、新しいウィンドウを開いていないため、新しいページのコンテンツは同じウィンドウに読み込まれます。ページ ラベルをクリックしたときに新しいコンテンツ ページでウィンドウの「読み込み」イベントがトリガーされないのはなぜですか location.href を変更しましたか?
解決策 1
まず、サイト所有者の許可がなければ、これは倫理的ではありません。あなたの利益のために、サイト所有者のサーバーに負担がかかる可能性があります。
サイト上の要素をクリックするには、その要素 ID を取得し、それを使用して自動的にクリックする必要があります。この場合は、ページをロードするための「a」要素です。 「a」要素は ID が「paginator」の div に含まれており、内部の各要素を選択してクリックします –
<script> window.addEventListener('load', function() { //Get all the 'a' elements inside the paginator div... var links = document.querySelectorAll('.paginator a'); //Iterate through each link and trigger a click event for each... links.forEach(function(link) { link.click(); }); }); </script>
[ad_2]
コメント