Javascript 使用剧作家获取列表元素列表
我正在尝试编写一个应用程序,它将进入亚马逊,并在页面上获得一个图书列表。我用剧作家作为工具。我可以找到正确的部分,但是我找不到书的目录。在线查看示例时,似乎使用了Javascript 使用剧作家获取列表元素列表,javascript,node.js,web-scraping,playwright,Javascript,Node.js,Web Scraping,Playwright,我正在尝试编写一个应用程序,它将进入亚马逊,并在页面上获得一个图书列表。我用剧作家作为工具。我可以找到正确的部分,但是我找不到书的目录。在线查看示例时,似乎使用了page.$$(选择器),但当我尝试这样做时,我得到了一个空数组。找到此信息,然后重试。阅读$$,这似乎是正确的调用,因为所有列表元素都具有相同的类名。我不知道我做错了什么,有什么建议吗 这是到目前为止我的代码 const AMAZON_KINDLE_EBOOK_STORE_URL = 'https://www.amazon.com/B
page.$$(选择器)
,但当我尝试这样做时,我得到了一个空数组。找到此信息,然后重试。阅读$$
,这似乎是正确的调用,因为所有列表元素都具有相同的类名。我不知道我做错了什么,有什么建议吗
这是到目前为止我的代码
const AMAZON_KINDLE_EBOOK_STORE_URL = 'https://www.amazon.com/Best-Sellers-Kindle-Store-eBooks/zgbs/digital-text/154606011/ref=zg_bs_nav_kstore_1_kstore/';
(async () => {
const browser = await chromium.launch();
try {
const amazonPage = await browser.newPage();
await amazonPage.goto(AMAZON_KINDLE_EBOOK_STORE_URL);
await amazonPage.waitForSelector('"Best Sellers in"');
await amazonPage.click('"Self-Help"');
await amazonPage.click('"Creativity"')
const books = await amazonPage.$$('li[class="zg-item-immersion"]');
console.log(books);
} finally {
await browser.close();
}
})();
对于选择器,我也尝试了很多方法
-这实际上可以在开发人员控制台上进行检查li[class=“zg item immersion”]
'zg-item-immersion'
#zg项目浸没
li[class=“zg item immersion”]
我调试了脚本,选择器很好,因此在这一行中,它返回50个元素句柄:
const{chromium}=require(“剧作家”);
const AMAZON\u KINDLE\u电子书\u商店\u URL='10〕https://www.amazon.com/Best-Sellers-Kindle-Store-eBooks/zgbs/digital-text/154606011/ref=zg_bs_nav_kstore_1_kstore/';
(异步()=>{
const browser=wait.launch({headless:false});
试一试{
const amazonPage=wait browser.newPage();
等待amazonPage.goto(亚马逊KINDLE电子书商店URL);
等待amazonPage.waitForSelector(“‘中的畅销书’”);
等待amazonPage。单击(“自助”);
等待承诺([
amazonPage.waitForNavigation(),
amazonPage。单击(“‘创造力’”)
]);
const books=wait amazonPage.$$('li[class=“zg item immersion”]”);
控制台。日志(书籍);
}最后{
等待浏览器关闭();
}
})();
您或许可以像上面几行那样为选择器执行以下操作:
const{chromium}=require(“剧作家”);
const AMAZON\u KINDLE\u电子书\u商店\u URL='10〕https://www.amazon.com/Best-Sellers-Kindle-Store-eBooks/zgbs/digital-text/154606011/ref=zg_bs_nav_kstore_1_kstore/';
(异步()=>{
const browser=wait.launch({headless:false});
试一试{
const amazonPage=wait browser.newPage();
等待amazonPage.goto(亚马逊KINDLE电子书商店URL);
等待amazonPage.waitForSelector(“‘中的畅销书’”);
等待amazonPage。单击(“自助”);
等待amazonPage。单击(“‘创造力’”)
等待amazonPage.waitForSelector('li[class=“zg item immersion”]”);
const books=wait amazonPage.$$('li[class=“zg item immersion”]”);
控制台。日志(书籍);
}最后{
等待浏览器关闭();
}
})();
它也是这样工作的。谢谢@pavelsaman,这对我来说是一种享受。因此,无论何时页面更改/更新,在执行任何操作之前,始终使用
waitForSelector