这段代码试图从网页中提取评论信息,并区分好评和差评。然而,代码中存在一些问题,导致无法正确提取所有评价内容。

问题解析:

  1. CSS 选择器错误: 在判断英文评价时,使用了错误的 CSS 选择器 ".c-review__body c-review__body--original",应该修改为 ".c-review__body.c-review__body--original"
  2. 判断逻辑错误: 代码使用 .eq(0).eq(1) 判断好评和差评是否存在,但这容易导致错误,因为如果只有一个评价,则 .eq(1) 会出现错误。应该使用 .length 属性判断元素数量。
  3. 不必要的 try-except: 在判断差评是否存在时,使用 try-except 语句是不必要的,因为代码本身不会出现错误,应该使用 .length 属性判断元素数量。
  4. 中文评价判断错误: 在中文评价中,判断好评和差评是否存在时,也应该使用 .length 属性判断元素数量,而不是 .eq(0).eq(1)

修改后的代码:

if li('.c-review__body').eq(0).text() == '客人没有留下任何评语。':
    good = '无'
    bad = '无'
else:   // 有评语
    try: 
        isen = li('.c-review__body.c-review__body--original').eq(0)
        // 英语
        try: // 有无好评
            if li('.c-review__prefix.c-review__prefix--color-green').length > 0:
                good = li('.c-review__body.c-review__body--original').eq(0).text()
            else:
                good = '无'
            if li('.c-review__body.c-review__body--original').length > 1: // 有无差评
                bad = li('.c-review__body.c-review__body--original').eq(1).text()
            else:
                bad = '无'
        except:
            // 只有差评
            good = '无'
            bad = li('.c-review__body.c-review__body--original').eq(0).text()
    except:
        console.log('有评价,是中文')
        // 中文
        try: // 有无好评
            if li('.c-review__prefix.c-review__prefix--color-green').length > 0:
                good = li('.c-review__body').eq(0).text()
            else:
                good = '无'
            if li('.c-review__body').length > 1: // 有无差评
                bad = li('.c-review__body').eq(1).text()
            else:
                bad = '无'
        except:
            good = '无'
            bad = li('.c-review__body').eq(0).text()

    console.log(good, bad)

总结:

通过修正代码中的 CSS 选择器、判断逻辑和 try-except 语句的使用,可以更准确地提取网页评论中的好评和差评内容。

解析代码问题:如何正确提取网页评论中的好评与差评

原文地址: https://www.cveoy.top/t/topic/nT7i 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录