Puppeteer爬取意式博彩站:为$()选中元素添加分隔符求助
解决Puppeteer爬取博彩网站对阵信息的格式化问题
我懂你现在的困扰——用Puppeteer爬取意大利博彩网站时,获取到的对阵球队信息全都挤成一团,完全没法区分场次。其实问题出在你直接用$('span.AvvenimentoDescription-rieyuj-0').text()的方式,它会把所有匹配到的span元素的文本直接无间隔拼接起来,自然就出现了Bologna - BresciaCagliari - Parma这种乱糟糟的结果。
要解决这个问题,核心思路是逐个获取每个span的文本内容,再用你想要的分隔符(空格、逗号都行)把它们拼接起来,下面给你两种实用的写法:
1. jQuery写法(如果页面引入了jQuery)
// 遍历每个匹配的span,收集文本后用逗号加空格拼接 let matches = $('span.AvvenimentoDescription-rieyuj-0') .map(function() { return $(this).text(); }) .get() .join(', '); // 如果想用空格分隔,就换成.join(' ') // let matches = $('span.AvvenimentoDescription-rieyuj-0').map(...).get().join(' '); console.log(matches);
2. 原生JavaScript写法(更适配Puppeteer场景)
在Puppeteer里通常会用page.evaluate()执行页面内的JS,原生写法兼容性更好:
// 注意在Puppeteer里要加await,因为evaluate是异步操作 const matches = await page.evaluate(() => { // 获取所有目标span元素 const matchElements = document.querySelectorAll('span.AvvenimentoDescription-rieyuj-0'); // 把NodeList转成数组,逐个提取文本,再用分隔符拼接 return Array.from(matchElements) .map(element => element.textContent.trim()) // 顺便去掉文本前后可能的冗余空格 .join(', '); // 换成' '就能得到空格分隔的版本 }); console.log(matches);
这样处理后,你就能得到格式清晰的对阵信息了,比如Bologna - Brescia, Cagliari - Parma, Sassuolo - Roma...或者带空格的版本,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Flavié
相关产品推荐
相关产品推荐

