在 XPATH 中我使用 '''...and''' 添加一个额外的标准,在 cheerio 中有这个选项吗?
In XPATH I use '''...and''' to add an additional criterion, in cheerio is there this option?
我使用 cheeriogs 库在 Google 应用程序脚本中工作:
图书馆编号:1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0
使用 =IMPORTXML('url','xpath')
我用这个 XPATH 进行调用:
//div[contains(@class,'match-card') and ../../td[@class='score-time ']/a[contains(@href, 'matches')]]
想法是收集包含 @class
和单词 match-card
的 div
但是
他需要将 td
link 编辑为 @class='score-time'
并且 a
包含带有单词 matches
的 @href
我试图用 CHEERIOGS 找到一种方法,但它总是 returns 空白,我的尝试是:
$('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());});
我怎样才能达到预期的结果?
通过评论中的请求获得的附加信息:
示例link:
https://int.soccerway.com/national/finland/suomen-cup/20212022/2nd-round/r67751/
预期的结果是当有 link 嵌入蓝色时收集红色的值:
在你的情况下,下面的修改脚本怎么样?
修改后的脚本:
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);
结果:
当此脚本为运行 for https://int.soccerway.com/national/finland/suomen-cup/20212022/2nd-round/r67751/
的URL时,得到如下结果。
[
["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/"]
]
那将是 :has 伪:
td.day:has(~ td.score-time a[href*="matches"])
这可能不适用于您使用的版本
我使用 cheeriogs 库在 Google 应用程序脚本中工作:
图书馆编号:1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0
使用 =IMPORTXML('url','xpath')
我用这个 XPATH 进行调用:
//div[contains(@class,'match-card') and ../../td[@class='score-time ']/a[contains(@href, 'matches')]]
想法是收集包含 @class
和单词 match-card
的 div
但是
他需要将 td
link 编辑为 @class='score-time'
并且 a
包含带有单词 matches
@href
我试图用 CHEERIOGS 找到一种方法,但它总是 returns 空白,我的尝试是:
$('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());});
我怎样才能达到预期的结果?
通过评论中的请求获得的附加信息:
示例link:
https://int.soccerway.com/national/finland/suomen-cup/20212022/2nd-round/r67751/
预期的结果是当有 link 嵌入蓝色时收集红色的值:
在你的情况下,下面的修改脚本怎么样?
修改后的脚本:
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);
结果:
当此脚本为运行 for https://int.soccerway.com/national/finland/suomen-cup/20212022/2nd-round/r67751/
的URL时,得到如下结果。
[
["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/"]
]
那将是 :has 伪:
td.day:has(~ td.score-time a[href*="matches"])
这可能不适用于您使用的版本