爬取商品评论时遭遇XPath结构不一致问题求助
爬取Tiki商品评论的XPath兼容方案
方案1:编写通用XPath兼容两种结构
抛弃固定层级索引的写法,改用匹配评论容器后抓取文本,直接合并两种差异路径:
//*[@id="__next"]/div[1]/main/div[3]/div[4]/div/div[2]/div[starts-with(@id, 'review-')]/div[2]/div[3]/text() | //*[@id="__next"]/div[1]/main/div[3]/div[4]/div/div[2]/div[starts-with(@id, 'review-')]/div[2]/div[3]/div/span[1]/text()
或者用更灵活的写法,直接在评论容器内提取所有非空文本:
//div[starts-with(@id, 'review-')]//div[contains(@class, 'review-content')]//text()[normalize-space()]
方案2:使用CSS选择器替代XPath
CSS选择器处理层级差异更灵活,比如:
#__next main div[class*='review-list'] div[starts-with(@id, 'review-')] div:nth-child(2) div:nth-child(3) > *
爬取时提取该选择器下所有元素的文本内容即可。
方案3:直接调用评论数据API接口
打开浏览器开发者工具的Network面板,查找包含review或comment关键词的接口,直接请求JSON格式的接口数据,里面的评论内容是结构化的,比解析HTML更稳定,还能规避页面结构变动的问题。
额外提醒
- 爬取时控制请求频率,避免触发网站反爬机制
- 若评论是分页/滚动加载模式,需处理好分页参数或滚动触发的接口请求
内容的提问来源于stack exchange,提问作者Avry G.
相关产品推荐
相关产品推荐

