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

Python爬虫问题:为何仅抓取Konga网站第一页产品详情而非全部25页?

问题分析与修复方案

你的代码仅能抓取第一页数据,核心问题有两个:

  1. get_url 函数循环逻辑错误,仅返回第一页URL就终止执行
  2. main 函数未遍历所有25页URL,仅发起了一次页面请求

以下是修复后的完整代码及关键修改说明:

关键修改点

  • 重构get_url函数为get_urls,返回包含全部25页URL的列表
  • 在main函数中遍历所有页面URL,逐页抓取产品数据
  • 修正URL模板的参数格式(将==改为标准的=,并使用命名参数完成字符串格式化)
  • 优化浏览器实例生命周期,仅初始化一次避免重复启动
  • 添加异常处理,防止单个产品卡片解析失败导致脚本中断
  • 修正CSV路径的转义问题,改用正斜杠避免语法错误

修复后的代码

from selenium import webdriver
import time
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import pandas as pd


def get_urls(product):
    # 生成25页的完整URL列表
    product_encoded = product.replace(' ', '%20')
    urls = []
    for page_num in range(1, 26):
        template = 'https://www.konga.com/search?search={product}&page={page}'
        url = template.format(product=product_encoded, page=page_num)
        urls.append(url)
    return urls


def get_all_products(nest):
    # 为每个元素解析添加异常捕获,避免单条数据失败中断整页抓取
    try:
        name = nest.find_element(By.CLASS_NAME, 'af885_1iPzH').text.strip()
    except:
        name = 'N/A'
    try:
        current_price = nest.find_element(By.CLASS_NAME, 'd7c0f_sJAqi').text.strip()
    except:
        current_price = 'N/A'
    try:
        reviews = nest.find_element(By.CLASS_NAME, 'eea9b_1Ma8-').text.strip()
    except:
        reviews = 'N/A'
    return (name, current_price, reviews)


def main(product):
    product_list = []
    all_urls = get_urls(product)
    
    # 初始化浏览器实例(仅执行一次)
    service = Service(executable_path="C:/driver/chromedriver_win32/chromedriver.exe")
    driver = webdriver.Chrome(service=service)
    driver.maximize_window()

    try:
        for url in all_urls:
            driver.get(url)
            time.sleep(5)  # 等待页面加载完成,可根据实际情况调整
            
            product_cards = driver.find_elements(By.CLASS_NAME, 'bbe45_3oExY')
            time.sleep(2)  # 等待产品卡片渲染
            
            for everyCard in product_cards:
                productDetails = get_all_products(everyCard)
                product_list.append(productDetails)
    finally:
        # 无论抓取是否完成,确保浏览器关闭
        driver.quit()

    # 导出数据到CSV
    col = ['Product_Name', 'Current_Price', 'Product_Reviews']
    df = pd.DataFrame(product_list, columns=col)
    df.to_csv("C:/Users/LP/Documents/MainTest/MainTest.csv", index=False, encoding='utf-8', mode='a')


product = input('Enter Product You Are Looking For : ')
main(product)

额外提示

  • 固定等待时间time.sleep可替换为WebDriverWait显式等待,提升抓取效率与稳定性
  • Konga网站可能存在反爬机制,建议适当增加页面请求间隔
  • 页面元素的类名(如af885_1iPzH)可能随网站更新变化,若后续抓取失败需重新验证元素选择器

内容的提问来源于stack exchange,提问作者Miracle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:15:35