【解決方法】操り人形師が動的クラス属性を取得し、ページ上の要素からテキストコンテンツを取得する方法


ゲーム Web サイトから特定の Div タグのコンテンツをスクレイピングしようとしています。 最初にサイトにアクセスすると、div タグには未完成のクラスを持つ空のコンテンツが含まれます。 例

その後、45 秒ごとに textContent と class 属性が動的に追加されます。例

45

45 秒ごとに、textContent と class 属性が別の値に変更されます。

最初はこんな感じかもしれません

23

45秒後、おそらくこのようなものに変わります

3

さらに45秒後、次のようになります

33

puppeteer がそのようなページにアクセスし、クラスと textcontent が div タグに追加されるのを待ってから、クラスがどんなものでも textcontent を取得してログに記録し、コンソールに puppetter を閉じて再度実行するようにするにはどうすればよいですか。

以下のコードを試してみましたが、selectElemClass が定義されていないか、未定義のプロパティの長さを読み取れないことがわかりました。 助けてください。

ページ上の 6 ボールの結果を調べて、説明しようとしている動作を確認できます。 ここは ウェブサイトのURL 左から最初のボールのクラスとテキストのコンテキストを取得しようとしています。 それがうまく機能するようになれば、残りの 5 つのボールに対して同じ作業プロセスを繰り返します。

私が試したこと:

JavaScript
<pre>const puppeteer = require("puppeteer");

async function scrapeData(url){
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(url);
const selectElemClass = await page.evaluate(() => {
    return document.querySelectorAll(".ball")[2].classList[1];
});
//console.log(selectElemClass);
const hasClassArived = await page.waitForFunction(function(selectElemClass){
   return selectElemClass.length > 6;
},{timeout:60000});
hasClassArived ? console.log(selectElemClass) : console.log("failed");
browser.close();
}
scrapeData("https://logigames.bet9ja.com/Games/Launcher?gameId=11000&provider=0&sid=&pff=1&skin=201");

解決策 1

こんにちは、次を使用できます: page.waitForSelector(‘selector’, {visible:true})

コメント

タイトルとURLをコピーしました