Uso la biblioteca cheeriogs para trabajar en Google App Script:
biblioteca de identificación: 1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0
Usando =IMPORTXML('url','xpath') realizo la llamada con este XPATH:
//div[contains(@class,'match-card') and ../../td[@class='score-time ']/a[contains(@href, 'matches')]]
La idea es recopilar los div que contienen @class con la palabra match-card
PERO
necesita tener td vinculado a @class='score-time' y a contiene el @href con la palabra matches
Traté de encontrar una manera de hacer esto con CHEERIOGS pero siempre regresa en blanco, mis intentos fueron:
$('tr:contains(td.score-time > a[href^="/matches/"]) > div[class^="match-card"]') .each((index, element) => {ss.getRange(index + 2, 2).setValue($(element).text().trim());}); $('tr td.score-time:contains(a[href^="/matches/"]) > div[class^="match-card"]') .each((index, element) => {ss.getRange(index + 2, 2).setValue($(element).text().trim());}); $('tr td.score-time > a[href^="/matches/"] > div[class^="match-card"]') .each((index, element) => {ss.getRange(index + 2, 2).setValue($(element).text().trim());});¿Cómo podría lograr el resultado esperado?
Información adicional a través de solicitudes en los comentarios:
Enlace de ejemplo:
https://int.soccerway.com/national/finland/suomen-cup/20212022/2nd-round/r67751/
El resultado esperado es recopilar los valores en rojo cuando hay enlaces incrustados en azul:
En su situación, ¿qué tal el siguiente script modificado?
const values = []; $("tr.expanded").each((_, element) => { var v1 = $(element).find('span').attr('data-value'); var v2 = $(element).find('td.score-time > a').attr('href'); if (v2) { values.push([Utilities.formatDate(new Date(Number(v1) * 1000), Session.getScriptTimeZone(), "HH:mm"), v2]); } }); console.log(values); // If you want to put the values to the Spreadsheet, please use this. `ss` from your showing script. ss.getRange(2, 2, values.length, values[0].length).setValues(values); Cuando se ejecuta este script para la URL de https://int.soccerway.com/national/finland/suomen-cup/20212022/2nd-round/r67751/ , se obtiene el siguiente resultado.
[ ["19:00","/matches/2022/03/27/finland/suomen-cup/oujk/roi-united/3751971/"], ["21:30","/matches/2022/03/27/finland/suomen-cup/puleward-city/tornion-pallo-47/3751969/"], ["07:00","/matches/2022/03/30/finland/suomen-cup/rastaala/valtti/3751935/"], ["07:00","/matches/2022/03/30/finland/suomen-cup/hapk/japs-ii/3751944/"], ["07:00","/matches/2022/03/30/finland/suomen-cup/japs-o35/finland-kumu-junior-team/3751949/"], ["07:00","/matches/2022/03/30/finland/suomen-cup/harjun-potku/sc-riverball/3751963/"], ["07:00","/matches/2022/03/30/finland/suomen-cup/fcs/jyvaskylan-seudun-palloseura/3751965/"], ["07:00","/matches/2022/03/30/finland/suomen-cup/barca/kuopion-elo/3751967/"], ["07:00","/matches/2022/03/30/finland/suomen-cup/pallo-kerho-37/pupa-o35/3751968/"] ]Ese sería el :tiene pseudo:
td.day:has(~ td.score-time a[href*="matches"])Sin embargo, es posible que esto no esté disponible en la versión que está utilizando.