使用XPath网页爬取时的数据重复问题求解
解决OP.GG页面CS数据爬取重复问题
方案1:优化XPath精准定位
原XPath会匹配页面中所有class为cs的div下的文本节点,包括响应式布局里的重复节点或隐藏元素。可以通过限定父节点范围来减少重复:
// 仅匹配主对局列表中的CS数据 $x('//div[contains(@class, "GameItemList")]/div//div[@class="cs"]/div/text()') .map(x => x.wholeText.trim()) .filter(Boolean)
方案2:JavaScript去重(通用解法)
如果XPath仍无法避免重复,直接用Set快速过滤重复值:
[...new Set( $x('//div[@class="cs"]/div/text()') .map(x => x.wholeText.trim()) .filter(Boolean) )]
trim()去除文本前后空白字符filter(Boolean)过滤空字符串结果new Set()自动去重,扩展运算符[...]将Set转回数组
内容的提问来源于stack exchange,提问作者Benjamin Correa
相关产品推荐
相关产品推荐

