我正在尝试从显示带有链接表的网页上使用Puppeteer抓取信息。
打开一个链接时,将打开一个包含更多信息的模式。
我正在尝试打开所有链接,并获取所有链接中的信息。
这是我的代码:
const puppeteer = require('puppeteer');
const fs = require('fs');
puppeteer.launch({headless: false}).then(async browser => {
const page = await browser.newPage();
await page.goto('https://fcylf.es/competiciones');
const competitionframe = await page.frames().find(f => f.name() === 'iframecombos');
const button = await competitionframe.$('#formulario > div.centrado > input.btn.btn-danger.boton_envio.btn-lg');
button.click();
let mainframe = await page.frames().find(f => f.name() === 'iframebooox');
await mainframe.waitForSelector('#datos > ul > li:nth-child(3) > a');
const div = await mainframe.$('#datos > ul > li:nth-child(3) > a');
div.click();
await mainframe.waitForSelector('#clasificacion > .panel > .table-responsive > #resultadosTable > tbody > tr > td > div > a');
const teams = await mainframe.$$('#clasificacion > .panel > .table-responsive > #resultadosTable > tbody > tr > td > div > a ');
const results = [];
for(let team of teams){
team.click();
await mainframe.waitForSelector('#myModalLabel');
const name = await mainframe.$eval('#myModalLabel', name => name.textContent );
results.push(name);
const closebt = await mainframe.$('#datos > div.equipoModal.modal.fade.in > div > div > div.modal-footer > button');
if(closebt!=null){
closebt.click();
}
}
console.log(results);
});
但是当我显示日志时,它总是显示相同的结果。
答案 0 :(得分:0)
我认为您想在设置为显示的div中找到#myModalLabel
:
隐藏模式:
<div class="equipoModal modal fade" tabindex="-1" role="dialog" aria-labelledby="basicModal" aria-hidden="true" style="display: none;">
显示的模式:
<div class="equipoModal modal fade in" tabindex="-1" role="dialog" aria-labelledby="basicModal" aria-hidden="false" style="display: block;">
此行:
const name = await mainframe.$eval('#myModalLabel', name => name.textContent );
好像是从隐藏的模式中获取textContent,而不是从显示的模式中获取。
我想。希望这会有所帮助!