使用Python的BeautifulSoup爬取练习网站时输出条目重复的原因
数据重复问题的原因及修复方案
问题根源
你遇到的每条数据重复的问题,出在商品链接收集环节:
每个商品容器(li.col-xs-6 col-sm-4 col-md-3 col-lg-3)里包含两个<a>标签——一个包裹商品图片,一个包裹商品标题,这两个标签的href完全相同。而你用了item.find_all('a', href=True)遍历所有a标签,导致同一条商品链接被重复添加到productlinks列表中。后续遍历这个列表爬取数据时,同一件商品会被处理两次,最终输出重复数据。
修复代码
把收集链接的内层循环替换为获取单个a标签的逻辑,无需遍历:
原代码片段:
for item in productlist: for link in item.find_all('a', href=True): productlinks.append(baseurl + link['href'])
修改为:
for item in productlist: link = item.find('a', href=True) productlinks.append(baseurl + link['href'])
补充说明
你猜测的表格遍历环节没有问题,重复数据和表格数据提取无关,核心问题就是商品链接被重复收集了。修改后每个商品只会被添加一次链接,爬取的数据就不会重复了。
内容的提问来源于stack exchange,提问作者kdavid3891
相关产品推荐
相关产品推荐

