この問題の解決策を見つけようとしています。
- ページを開く 特定のリンクを取得する
- リンク (ページネーション リンク) をクリックして、結果の 2 ページ目を取得します。
- 新しいコンテンツを読んで、新しいリンクをもう一度取得してください....
これは私の casperjs アプリの一部です:
var page = 1;
function getLinks() {
var links = __utils__.getElementsByXPath('//div[@class="myDiv"]//a');
return Array.prototype.map.call(links, function(e) {
return e.getAttribute('href')
});
}
casper.start("www.example.com", function(){
//
})
casper.repeat(2, function() {
this.then(function(){
links = this.evaluate(getLinks);
links = links.concat(links);
});
this.then(function(){
page++;
this.clickLabel(String(page), 'a');
});
});
ご覧のとおり、repeat 内に 2 つのステップがあります。2 ページだけをチェックする必要があるため、2 を設定しました。
現時点で私の問題は「クリック」です。新しい URL が呼び出されるため機能しますが、最初のステップがすぐに実行されるため、新しいコンテンツが完全に読み込まれないという問題があります。そのため、再度 getLinks() を呼び出すと、以前のコンテンツで引き続き作業します。
ページが完全にロードされたら、明らかに getLinks を使用したいと思います。どうすればできますか?
ありがとうございました!