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