Python爬虫问题:为何仅抓取Konga网站第一页产品详情而非全部25页?
问题分析与修复方案
你的代码仅能抓取第一页数据,核心问题有两个:
get_url函数循环逻辑错误,仅返回第一页URL就终止执行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
相关产品推荐
相关产品推荐

