You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用BeautifulSoup爬取立创商城分页数据时重复获取内容的问题

问题分析

你的代码爬取重复数据的核心原因是分页参数设置错误:

  • 立创商城列表页的分页参数是pageNumber,但你在循环中错误地给params添加了page键,且初始params里的pageNumber被固定设为传入的pages值(比如调用get_some_pages(3)时,pageNumber一开始就是3)。
  • 这导致每次请求都在获取第3页的数据,循环3次就得到了3组完全相同的内容。
修正方案
  1. 移除初始params里错误的pageNumber : pages设置,改为在循环中动态设置pageNumber参数
  2. 优化DataFrame拼接方式:用列表存储每行数据,最后一次性转为DataFrame,比循环pd.concat效率更高

修正后的代码:

import pandas as pd
import requests
from bs4 import BeautifulSoup
import time

def get_some_pages(pages):
    headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Mobile Safari/537.36'}
    params = {'catalogNodeId': 313}
    url = 'https://list.szlcsc.com/catalog/431.html'
    data_list = []  # 用列表存储数据,提升效率
    for page in range(1, pages+1):
        params['pageNumber'] = page  # 正确设置分页参数
        res = requests.get(url, headers=headers, params=params)
        time.sleep(10)
        soup = BeautifulSoup(res.text, 'html.parser')
        all_cat_list = soup.find_all('tr', {'class': 'no-tj-tr add-cart-tr'})
        for cat_list in all_cat_list:
            name = cat_list.select_one('div.two-tit a').text.strip()
            link = cat_list.select_one('div.two-tit a').get('href')
            kolvo = cat_list.select_one('div.stock-nums-js span').text.strip()
            price = cat_list.select_one('div.price-warp-local span').get('orderprice')
            row = {
                'name': name,
                'link': link,
                'kolvo': kolvo,
                'price': price,
                'rub': float(price)*1.6
            }
            data_list.append(row)
    return pd.DataFrame(data_list).reset_index(drop=True)

# 调用测试
result = get_some_pages(3)
print(result)
额外说明
  • 移除了未使用的urllib.parse、xlrd、re库,精简依赖
  • 简化了select_one的链式调用,直接用div.two-tit a更简洁
  • 用列表存储数据后再转DataFrame,避免了循环拼接DataFrame带来的性能损耗

内容的提问来源于stack exchange,提问作者Евгений Еремеев

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 21:48:14