hyisangie

selenium遍历元素时获得重复结果

在获取网页源代码之后,对数据进行提取。

 def get_goods_info(self):
        '''
            解析得到商品信息字段
        '''
        li_list = self.driver.find_elements_by_xpath('//div[@class="lego-pc-search-list pc-search-list"]/ul/li')

我在这里获得的了一个列表li_list,里面装有该页的每个产品。接下来就是遍历这个li_list中的每个元素,继续提取需要的信息。

# 这是最开始的写法:
        for li in li_list:
            name = li.find_element_by_xpath(r'//a/div[@class="pc-items-item-title pc-items-item-title-row2"]/span').text
            price = li.find_element_by_xpath(r'//a/div[@class="price-con"]/span[2]').text

结果发现,获取到的每条信息都是列表中的第一个信息。原因就在 r'//a/div[@class="这个继续提取的部分中,一定要用.来开头,否则就会从顶部开始搜索,找到的总会是第一个。

# 修改之后的写法
        for li in li_list:
            name = li.find_element_by_xpath(r'.//a/div[@class="pc-items-item-title pc-items-item-title-row2"]/span').text
            price = li.find_element_by_xpath(r'.//a/div[@class="price-con"]/span[2]').text

posted on 2021-08-15 22:04  hyisangie  阅读(510)  评论(0编辑  收藏  举报

导航