程序无法 剔除 class="STRIKETHROUGH" 的值
回答
收藏

程序无法 剔除 class="STRIKETHROUGH" 的值
50刀币

张女士
2025-07-04 09:39·浏览量:3443
张女士
发布于 2025-07-04 09:393443浏览

import re

from typing import *

try:

   from xbot.app.logging import trace as print

except:

   from xbot import print

from xbot_ai import *

def extract_and_sum_dollar_values(browser, primary_section1):

   """

   title: 提取并计算美元数值总和

   description: %primary_section1%中提取所有以$开头的数值(排除删除线数值),并相加返回数值格式的总和

   inputs:

       - browser (WebBrowser): 目标网页

       - primary_section1 (Selector): `块元素_s-item__details-section--primary`uuid: s3ms9k75

   outputs:

       - total_sum (float): 所有以$开头的数值总和

   """

   

   def _extract_dollar_values_from_element(element):

       """内部函数:从元素中提取所有以$开头的数值,排除删除线数值"""

       html_content = element.get_html()

       text_content = element.get_text()

       

       # 提取所有以$开头的数值

       dollar_pattern = r'\$(\d+(?:\.\d+)?)'

       all_matches = re.findall(dollar_pattern, text_content)

       all_values = [float(match) for match in all_matches]

       

       # 查找删除线标签中的数值并排除

       strikethrough_pattern = r'<span class="STRIKETHROUGH">[^<]*\$(\d+(?:\.\d+)?)[^<]*</span>'

       strikethrough_matches = re.findall(strikethrough_pattern, html_content)

       strikethrough_values = [float(match) for match in strikethrough_matches]

       

       # 过滤掉删除线中的数值

       filtered_values = []

       for value in all_values:

           if value not in strikethrough_values:

               filtered_values.append(value)

       

       return filtered_values, strikethrough_values

   

   total_sum = 0.0

   

   print("1. 检查块元素是否存在")

   try:

       elements = browser.find_all_by_xpath(primary_section1, timeout=3)

       if elements:

           print(f"    a. 块元素存在,共找到 {len(elements)} ")

           element = elements[0]

           values, excluded_values = _extract_dollar_values_from_element(element)

           print(f"        - 提取到的有效数值: {values}")

           print(f"        - 排除的删除线数值: {excluded_values}")

           total_sum = sum(values)

       else:

           print("    a. 块元素不存在")

           raise Exception("页面上未找到指定的块元素")

   except Exception as e:

       print(f"    a. 块元素查找失败: {str(e)}")

       raise Exception(f"无法找到块元素: {str(e)}")

   

   print(f"2. 计算总和: {total_sum}")

   

   return total_sum

尝试过的方案


收藏1
全部回答1
最新
发布回答
回答