0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

京东关键词搜索商品列表的Python实战

来源:jf_57394773 作者:jf_57394773 2026-01-09 10:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、实现思路分析

URL 构造:京东搜索 URL 格式为 https://search.jd.com/Search?keyword=关键词&page=页码(page 为奇数,如 1、3、5 对应第 1、2、3 页)。

反爬处理模拟浏览器请求(设置 User-Agent、Cookie)、控制请求频率(添加延迟)。

页面解析:京东商品列表的核心信息(标题、价格、链接、店铺)嵌在 HTML 中,用 BeautifulSoup 解析。

数据保存:将爬取的信息保存为 CSV 文件,方便后续查看。

二、实战代码实现

1. 安装依赖库

首先在终端执行以下命令安装所需库:

bash

运行

pip install requests beautifulsoup4 fake-useragent pandas

2. 完整爬虫代码

python

运行

import requests
from bs4 import BeautifulSoup
import time
import random
from fake_useragent import UserAgent
import pandas as pd

class JdSpider:
    def __init__(self, keyword, page_num=3):
        # 初始化参数
        self.keyword = keyword  # 搜索关键词
        self.page_num = page_num  # 要爬取的页数
        self.headers = self._get_headers()  # 请求头
        self.data_list = []  # 存储爬取的商品数据

    def _get_headers(self):
        """构造请求头,模拟浏览器访问"""
        # 注意:Cookie需要替换成你自己的(从浏览器开发者工具中复制)
        cookie = "你的京东Cookie"  # 替换成真实Cookie!!!
        ua = UserAgent()
        headers = {
            "User-Agent": ua.random,  # 随机生成User-Agent
            "Cookie": cookie,
            "Referer": "https://www.jd.com/",
            "Accept-Language": "zh-CN,zh;q=0.9",
            "Connection": "keep-alive"
        }
        return headers

    def _get_page_url(self, page):
        """构造指定页码的搜索URL"""
        # 京东的page参数:第1页=1,第2页=3,第3页=5,以此类推
        jd_page = page * 2 - 1
        url = f"https://search.jd.com/Search?keyword={self.keyword}&page={jd_page}&enc=utf8"
        return url

    def _parse_page(self, html):
        """解析页面,提取商品信息"""
        soup = BeautifulSoup(html, "html.parser")
        # 找到所有商品项
        items = soup.find_all("li", class_="gl-item")
        
        for item in items:
            try:
                # 1. 商品价格
                price_elem = item.find("div", class_="p-price")
                price = price_elem.find("i").text if price_elem else "无价格"
                
                # 2. 商品标题
                title_elem = item.find("div", class_="p-name p-name-type-2")
                title = title_elem.find("em").text.strip() if title_elem else "无标题"
                
                # 3. 商品链接
                link_elem = item.find("a", class_="J_ClickStat")
                link = "https:" + link_elem["href"] if link_elem else "无链接"
                
                # 4. 店铺名称
                shop_elem = item.find("div", class_="p-shop")
                shop = shop_elem.find("a").text.strip() if shop_elem else "无店铺"
                
                # 存储数据
                self.data_list.append({
                    "标题": title,
                    "价格": price,
                    "链接": link,
                    "店铺": shop
                })
            except Exception as e:
                print(f"解析单个商品失败:{e}")
                continue

    def run(self):
        """爬虫主逻辑"""
        print(f"开始爬取京东关键词【{self.keyword}】的商品信息,共{self.page_num}页...")
        
        for page in range(1, self.page_num + 1):
            try:
                # 1. 构造URL
                url = self._get_page_url(page)
                # 2. 发送请求
                response = requests.get(url, headers=self.headers, timeout=10)
                response.encoding = "utf-8"  # 设置编码
                # 3. 解析页面
                self._parse_page(response.text)
                # 4. 打印进度
                print(f"第{page}页爬取完成,已获取{len(self.data_list)}条商品数据")
                # 5. 随机延迟(2-5秒),避免高频请求被封
                time.sleep(random.randint(2, 5))
                
            except Exception as e:
                print(f"第{page}页爬取失败:{e}")
                continue
        
        # 保存数据到CSV
        if self.data_list:
            df = pd.DataFrame(self.data_list)
            df.to_csv(f"京东_{self.keyword}_商品列表.csv", index=False, encoding="utf-8-sig")
            print(f"数据保存完成!文件名为:京东_{self.keyword}_商品列表.csv")
        else:
            print("未爬取到任何商品数据!")

if __name__ == "__main__":
    # 示例:爬取关键词"Python编程"的前3页商品
    spider = JdSpider(keyword="Python编程", page_num=3)
    spider.run()

三、关键部分解释

Cookie 获取方法

打开浏览器访问京东(登录后),按 F12 打开开发者工具 → 切换到 Network 标签 → 刷新搜索页面 → 找到第一个请求(Search?keyword=...)→ 在 Request Headers 中复制 Cookie 值,替换代码中的你的京东Cookie。

请求头构造

使用fake-useragent随机生成 User-Agent,避免固定 UA 被识别为爬虫;

添加 Referer、Cookie 等字段,模拟真实用户的请求特征。

页面解析逻辑

通过BeautifulSoup定位商品项(li.gl-item),再分别提取价格(div.p-price)、标题(div.p-name)、链接(a.J_ClickStat)、店铺(div.p-shop);

加入异常处理,避免单个商品解析失败导致整个页面爬取中断。

反爬措施

随机延迟(2-5 秒):避免短时间内发送大量请求;

模拟浏览器请求头:降低被反爬机制识别的概率;

分页爬取:控制爬取页数,避免一次性爬取过多数据。

四、测试与注意事项

运行代码:替换 Cookie 后,直接运行代码,会在当前目录生成 CSV 文件,包含商品标题、价格、链接、店铺信息。

重要注意事项

京东的反爬机制会更新,若 HTML 结构变化,需重新检查元素调整解析规则;

不要爬取过多数据 / 过快,否则可能被封 IP 或账号;

该爬虫仅用于学习,请勿用于商业用途,遵守京东的 robots 协议。

总结

京东商品列表爬虫的核心是构造正确的 URL + 模拟浏览器请求(Cookie/UA) + 解析 HTML 提取数据

反爬的关键是控制请求频率、伪装请求特征,避免被京东的反爬系统识别;

数据解析时需加入异常处理,保证爬虫的稳定性,最后将数据保存为 CSV 方便后续使用。


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • API
    API
    +关注

    关注

    2

    文章

    2474

    浏览量

    67005
  • python
    +关注

    关注

    58

    文章

    4884

    浏览量

    90300
  • 京东
    +关注

    关注

    2

    文章

    1129

    浏览量

    50140
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    从踩坑到高效落地:关键词搜索京东商品列表 API 的实操心得

    京东商品列表 API 是获取京东平台商品数据的核心接口,支持关键词搜索、分类筛选、价格区间、销量
    的头像 发表于 03-11 13:29 710次阅读

    关键词搜索京东列表 API 技术对接指南

    一、前言 在电商数据服务、代购集运系统搭建、电商平台竞品分析、自有商城商品同步等业务场景中,京东商品列表的精准、实时获取是核心环节之一。 二、接口概述
    的头像 发表于 02-05 16:36 517次阅读

    野莓平台关键词商品搜索API接口使用指南

    的设计、使用方法及最佳实践,帮助您高效集成到应用中。 1. API接口概述 野莓关键词商品搜索API是一个RESTful接口,基于HTTP GET方法实现。它允许用户输入关键词(如“野
    的头像 发表于 02-04 16:48 646次阅读
    野莓平台<b class='flag-5'>关键词</b><b class='flag-5'>商品</b><b class='flag-5'>搜索</b>API接口使用指南

    京东关键词的应用

    京东关键词应用核心是围绕搜索匹配与流量获取,贯穿商品上架、搜索优化、付费推广、精细化运营等全链路,以精准匹配用户需求、提升排名与转化为目标。以下是具体应用与实操方法: 一、
    的头像 发表于 01-20 09:05 819次阅读

    接入京东关键词API的核心利弊分析

    接入京东关键词API的核心价值在于通过官方合规的数据能力,驱动电商运营的精细化与自动化,但同时也存在接入门槛、成本投入及合规约束等潜在问题。以下从“利”“弊”两大维度展开详细分析,并给出平衡策略,为
    的头像 发表于 01-14 15:39 398次阅读

    使用京东关键词搜索接口获取商品数据的实操指南

    一、接口接入前期准备 使用京东关键词搜索接口前,需完成京东开放平台的账号认证、应用创建及权限申请,这是获取合法调用资格的基础,也是保障接口稳定调用的前提。 (一)注册并认证开发者账号 1. 访问
    的头像 发表于 01-12 11:46 597次阅读

    京东关键词API接口获取

    你想要获取京东关键词相关的 API 接口,以此替代传统爬虫,更合规、稳定地获取商品列表等信息,我会先讲解 官方合规的 API 获取与使用方式 (推荐),再说明非官方接口的情况(仅供学习),并给出
    的头像 发表于 01-09 14:16 911次阅读

    京东关键词 API 场景的需求梳理模板

    京东关键词 API 场景需求梳理模板 本模板适用于 联盟推广、商家运营、工具开发、市场分析 等基于京东关键词 API 的业务需求梳理,可直接用于需求文档撰写、API 对接方案评审。 核心模块 填写项
    的头像 发表于 01-08 13:45 270次阅读

    京东关键词的应用场景

    京东关键词在 API 层面的应用,是串联 商品检索、数据运营、商业决策、工具开发 的核心纽带,结合京东开放平台 API(如商品查询、联盟推广、数据统计类接口),其应用场景覆盖电商全链路
    的头像 发表于 01-08 13:38 738次阅读

    京东关键词搜索接口获取商品数据的实操指南

    京东关键词搜索接口获取商品数据 实操指南 本指南聚焦 京东开放平台合规接口 (item_search基础版 / item_search_pro增强版),提供 从账号准备→接口调用→数据
    的头像 发表于 01-07 13:56 419次阅读

    京东关键词API赋能

    的「关键词搜索数据」转化为选品、运营、竞品监控、定价策略的决策依据,实现从 “经验驱动” 到 “数据驱动” 的业务升级。结合电商技术开发、运营优化的实际需求,本文从 四大核心赋能场景、实战落地流程、进阶升级方案 三个维度,拆解
    的头像 发表于 01-07 09:53 820次阅读

    京东关键词item_search-按关键搜索京东商品

    京东关键词搜索(item_search)技术实现指南:合规 API 调用 + 数据运营实战 京东商品关键
    的头像 发表于 01-06 09:27 1274次阅读

    浅谈京东关键词

    格式的字符串)。 关键词搜索结果的关联性 :关键词的精准度决定爬取结果的相关性,京东搜索会对关键词
    的头像 发表于 01-04 10:40 1156次阅读

    京东关键词搜索商品列表Python爬虫实战

    京东关键词搜索商品列表 Python 爬虫实战 你想要实现
    的头像 发表于 01-04 10:16 1245次阅读

    搜索关键词获取商品详情接口的设计与实现

    原理、设计、代码实现和优化。内容基于真实开发实践,确保技术可靠性。 1. 接口需求与原理 用户输入关键词(如“智能手机”),接口需返回匹配的商品列表,每个商品包含ID、名称、价格、描述
    的头像 发表于 10-20 15:37 629次阅读
    <b class='flag-5'>搜索</b><b class='flag-5'>关键词</b>获取<b class='flag-5'>商品</b>详情接口的设计与实现