Selenium技术问题:遍历不同类名子元素时价格提取重复
问题:遍历子元素时重复获取第一个元素的价格
场景:需要遍历父元素的子元素,提取每个子元素对应的价格信息,但现有代码每次都输出第一个元素的价格,而非对应子元素的价格。
现有代码:
pack_size_elements = wd.find_elements(By.XPATH , "//div[@class='_1LiCn']/div") for element in pack_size_elements: price = element.find_element(By.XPATH, "//span[@class ='_2j_7u']").text.strip() print(price)
当前输出:
Rs 61 Rs 61 Rs 61 Rs 61
期望输出:
Rs 61 Rs 299.50 Rs 1797 Rs 1830
问题原因
你写的XPath //span[@class='_2j_7u']是从整个HTML文档的根节点开始搜索,所以每次循环都会找到页面中第一个匹配的价格元素,而非当前遍历的子元素下的价格。
修正方案
把XPath改成相对路径,在开头加.,表示从当前遍历的element节点下开始查找:
pack_size_elements = wd.find_elements(By.XPATH , "//div[@class='_1LiCn']/div") for element in pack_size_elements: # 这里的.表示从当前element节点开始搜索子节点 price = element.find_element(By.XPATH, ".//span[@class ='_2j_7u']").text.strip() print(price)
这样循环时,每次都会从当前子元素下查找对应的价格节点,就能输出正确的对应价格了。
内容的提问来源于stack exchange,提问作者yash agarwal
相关产品推荐
相关产品推荐

