- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这一切都有效。它加载第一页并创建一个循环来打开列表中的每个链接。我遇到的问题是 const name = await page.evaluate(() => document.querySelector('li.inline.t-24.t-black.t-normal.break-words').innerText);
。我不明白为什么它引用第一个加载的页面而不是使用 link.click();
打开的页面。有人可以解释一下吗?
(async function main() {
try {
// launch puppeteer
const browser = await puppeteer.launch({headless: false});
// open browser
const page = await browser.newPage();
page.setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3844.0 Safari/537.36');
// load first page to generate list of links to scrape
await page.goto("https://www.websitepage1.come");
// wait for page to load
await page.waitForSelector('h4 > span')
// get list of buttons on page
const lists = await page.$$('ul.search-results__list.list-style-none > li.search-result.search-result__occluded-item.ember-view');
// loop through list of links
for (let i = 0; i < lists.length; i++) {
const list = lists[i]
const link = await list.$('a.search-result__result-link.ember-view');
const linkName = await list.$('a.search-result__result-link.ember-view span.name.actor-name');
const linkeNameText = await page.evaluate(linkName => linkName.innerText, linkName)
// open the link
link.click();
await page.waitForSelector('h4 > span')
await page.waitForSelector('li.inline.t-24.t-black.t-normal.break-words')
// THIS IS WHERE THE ERROR IS OCCURING. IT RETURNS AN ELEMENT FROMawait page.goto("https://www.websitepage1.come");
const name = await page.evaluate(() => document.querySelector('li.inline.t-24.t-black.t-normal.break-words').innerText);
console.log('name', name);
console.log('\n\n');
}
} catch (e) {
console.log('our error', e);
}
})();
最佳答案
单击该链接后,您需要等待新页面加载,否则脚本的其余部分将使用第一个加载的页面。您需要等待navigation
:
// open and process the first page
await Promise.all([
page.waitForNavigation(), // The promise resolves after navigation has finished
link.click(), // Clicking the link will indirectly cause a navigation
]);
// now process the second page
关于javascript - 循环访问页面链接 puppeteer 不会从新加载的页面返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57532897/
新的媒体管理器看起来很棒,非常好,但是,在以前的版本中,它在附件详细信息中有几个字段我想避免使用,我曾经使用以下代码: add_filter('attachment_fields_to_edit',
当您使用 IDE 构造函数(new->activity)创建新 Activity 时 - 在 Android Studio 和 Eclipse 中 - 它会创建新的 java 文件、布局文件、添加 A
我使用了 PDF 渲染问题中的代码 How to render PDF in Android 而且有效!回答者的 Prop ,但我的问题是关于做同样的事情,但也发送关键字以在 pdf 中搜索。我不知道
我试图让用户能够循环浏览视频,即时更改 AVPlayer URL 而无需刷新 View 。但是,现在我只是在每次播放视频时实例化 AVPlayer 对象(导致音频相互播放),我觉得这不是最好的方法。有
当您向 ASP.NET MVC 项目添加新 View 时,您可以通过在对话框中选择它应该使用的模型类来强类型化 View 。问题在于该下拉菜单中包含所有引用项目和 dll 中的所有类和接口(inter
简而言之: 从新 git 存储库 上的远程分支 pull 代码后,我能否将代码重置为执行 git pull 之前的状态? 长话短说: 我有两个包含脚本的文件夹,一个文件夹代表另一个文件夹中文件的另一个
如何导出 ARMeshGeometry新生成的SceneReconstruction最新 iPad Pro 上的 API .obj文件? 这是SceneReconstruction文档。 最佳答案 从
我是一名优秀的程序员,十分优秀!