【发布时间】:2019-08-09 17:49:40
【问题描述】:
每当页面无法正确加载或遇到问题时,我想重新加载该页面。我试过page.reload(),但它不起作用。
for(const sect of sections ){
// Now collect all the URLs
const appUrls = await page.$$eval('div.main > ul.app-list > li > div.app-info a.app-info-icon', links => links.map(link => link.href));
// Visit each URL one by one and collect the data
for (let appUrl of appUrls) {
var count = i++;
try{
await page.goto(appUrl);
const appName = await page.$eval('div.det-name-int', div => div.innerText.trim());
console.log('\n' + count);
console.log(appName);
} catch(e){
console.log('\n' + count);
console.log('ERROR', e);
await page.reload();
}
}
}
它给了我这个错误:
ERROR Error: Error: failed to find element matching selector "div.det-name-int"
at ElementHandle.$eval (C:\Users\Administrator\node_modules\puppeteer\lib\JS
Handle.js:418:13)
at process._tickCallback (internal/process/next_tick.js:68:7)
-- ASYNC --
at ElementHandle.<anonymous> (C:\Users\Administrator\node_modules\puppeteer\
lib\helper.js:108:27)
at DOMWorld.$eval (C:\Users\Administrator\node_modules\puppeteer\lib\DOMWorl
d.js:149:21)
at process._tickCallback (internal/process/next_tick.js:68:7)
-- ASYNC --
at Frame.<anonymous> (C:\Users\Administrator\node_modules\puppeteer\lib\help
er.js:108:27)
at Page.$eval (C:\Users\Administrator\node_modules\puppeteer\lib\Page.js:329
:29)
at Page.<anonymous> (C:\Users\Administrator\node_modules\puppeteer\lib\helpe
r.js:109:23)
at main (C:\Users\Administrator\Desktop\webscrape\text.js:35:43)
at process._tickCallback (internal/process/next_tick.js:68:7)
部分链接无法成功加载。当我手动刷新这些页面时,它可以工作。所以我希望有一个函数或者方法可以帮助我在出现错误时自动重新加载我的页面。
【问题讨论】:
-
它是否抛出任何错误?如果是这样,那是什么? page.reload 是一个承诺,你没有处理它。尝试使用它,看看它是否被执行
-
好像不行??究竟是什么意思?
-
@Sammy 页面加载错误
-
能否附上截图?加载错误有很多种。 HTTP 状态码是什么?也许您正在尝试一些非法的东西,如被阻止的站点或远程服务器已关闭。我们需要有关错误的更多信息
-
@Sammy 我在问题中包含了错误。
标签: javascript node.js chromium puppeteer