京东搜索关键词

你现在关注的是京东爬虫中的关键词相关知识点,包括关键词的 URL 处理、构造技巧、在爬虫中的使用注意事项等,我会围绕这部分展开详细讲解,衔接之前的爬虫实战内容。

一、京东搜索关键词的核心特性

  1. 支持中文直接搜索 :京东官网支持中文关键词输入(如 "笔记本电脑"、"华为手机"),但在 HTTP 请求中,中文关键词会被自动进行URL 编码 (将中文转换为%XX格式的字符串)。
  2. 关键词与搜索结果的关联性:关键词的精准度决定爬取结果的相关性,京东搜索会对关键词进行分词匹配(如 "Python 实战书籍" 会拆分匹配 "Python"、"实战"、"书籍")。
  3. 请求参数中的关键词传递 :在之前的爬虫代码中,关键词通过params字典的"keyword""wq"字段传递,其中"wq"字段是京东的补全搜索参数,与主关键词保持一致可提高请求成功率。

二、关键词的 URL 编码处理

1. 自动编码(推荐,爬虫首选)

在使用requests库发送请求时,将关键词直接传入params参数,requests自动完成中文关键词的 URL 编码,无需手动处理,这也是之前代码中采用的方式,示例:

python

运行

复制代码
import requests
from fake_useragent import UserAgent

ua = UserAgent()
headers = {"User-Agent": ua.random}

# 直接传入中文关键词,无需手动编码
keyword = "Python实战书籍"
url = "https://search.jd.com/Search"
params = {
    "keyword": keyword,
    "enc": "utf8",
    "page": 1
}

# requests会自动将"Python实战书籍"编码为URL可识别格式
response = requests.get(url, params=params, headers=headers, timeout=15)
print("最终请求URL:", response.url)  # 可查看编码后的完整URL

2. 手动编码(备用方案)

若需手动处理关键词编码,可使用 Python 内置的urllib.parse.quote()方法,适用于不使用requests参数传递的场景,示例:

python

运行

复制代码
from urllib.parse import quote

# 中文关键词手动URL编码
keyword = "Python实战书籍"
encoded_keyword = quote(keyword, encoding="utf-8")  # 指定utf-8编码(京东要求)
print("编码后关键词:", encoded_keyword)  # 输出:Python%E5%AE%9E%E6%88%98%E4%B9%A6%E7%B1%8D

# 手动构造编码后的URL
url = f"https://search.jd.com/Search?keyword={encoded_keyword}&enc=utf8&page=1"

三、关键词的构造与优化技巧(提升爬取精准度)

1. 精准关键词构造(获取目标商品)

  • 带品牌 / 型号:如 "华为 Mate 60 Pro 手机"、"联想拯救者 Y9000P 笔记本"
  • 带规格 / 参数:如 "16G 512G 轻薄笔记本"、"500ml 保温杯 316 不锈钢"
  • 带用途:如 "办公用激光打印机"、"学生党平价平板电脑"

2. 模糊关键词构造(获取泛类商品)

适用于爬取某一类商品的整体信息,如 "笔记本电脑"、"休闲零食"、"家居收纳用品",这类关键词返回结果数量多,适合批量学习爬虫数据处理。

3. 排除式关键词(过滤无关结果)

京东支持使用-符号排除无关内容,构造关键词时可利用这一规则提升爬取结果的精准度,示例:

  • 关键词 "笔记本电脑 - 游戏本":爬取非游戏本的笔记本电脑
  • 关键词 "保温杯 - 塑料 - 儿童":爬取成人用、非塑料材质的保温杯

四、爬虫中关键词使用的注意事项

  1. 避免敏感关键词:勿爬取涉及违禁品、侵权商品、医疗药品等敏感关键词的内容,遵守平台规则和法律法规。

  2. 关键词格式化处理 :去除关键词前后的空格、特殊字符(如#@),避免请求失败或返回无效结果,示例:

    python

    运行

    复制代码
    def format_keyword(keyword):
        """关键词格式化:去空格、去特殊字符"""
        # 去除前后空格
        keyword = keyword.strip()
        # 去除常见无效特殊字符
        invalid_chars = ["#", "@", "¥", "★", "☆"]
        for char in invalid_chars:
            keyword = keyword.replace(char, "")
        return keyword
    
    # 格式化使用
    raw_keyword = "  ¥Python书籍★实战  "
    target_keyword = format_keyword(raw_keyword)
    print("格式化后关键词:", target_keyword)  # 输出:Python书籍实战
  3. 防止中文乱码 :无论是关键词传递还是结果保存,均统一使用utf-8编码(与之前爬虫代码中的response.encoding = "utf-8"、文件保存encoding="utf-8"保持一致)。

  4. 批量关键词爬取的延时控制 :若需循环爬取多个关键词(如 ["Python 书籍", "Java 书籍", "C++ 书籍"]),需在关键词之间添加额外延时(≥3 秒),避免高频请求触发反爬,示例:

    python

    运行

    复制代码
    import time
    from fake_useragent import UserAgent
    
    # 批量关键词列表
    keyword_list = ["Python书籍", "Java书籍", "C++书籍"]
    
    for keyword in keyword_list:
        print(f"开始爬取关键词:{keyword}")
        goods_list = get_jd_goods(keyword=keyword, page=1)  # 调用之前的爬虫函数
        save_goods_to_txt(goods_list, keyword)
        # 关键词之间添加3秒延时,强化反爬
        time.sleep(3)

五、补充:京东关键词搜索的特殊规则

  1. 关键词中的空格代表 "并列匹配":如 "手机 快充",会匹配同时包含 "手机" 和 "快充" 的商品。
  2. 双引号包裹关键词代表精确匹配 :如"Python核心编程",会严格匹配完整关键词,不进行分词拆分,爬取结果更精准(需注意:双引号传入请求时无需转义,requests会自动处理)。
  3. 部分特殊符号(如*?)在京东搜索中无效,爬虫中构造关键词时可直接剔除。

总结

  1. 京东爬虫中,中文关键词优先使用requests自动 URL 编码,无需手动处理,简洁高效。
  2. 关键词的精准构造(带品牌 / 规格)和格式化处理,是提升爬取结果相关性的关键。
  3. 批量关键词爬取时,需添加额外延时,同时避免敏感关键词,遵守爬虫合规原则。
  4. 衔接之前的实战代码,修改target_keyword变量为不同优化后的关键词,即可获取对应的商品列表。
相关推荐
笒鬼鬼16 小时前
【API接口】最新可用红果短剧接口
算法·api·笒鬼鬼·红果短剧·接口源码
SuperherRo17 小时前
API攻防-接口类型&测试方法&端点提取&暴漏攻击&枚举规则&RESTful风格&GraphQL语法
api·restful·graphql
147API17 小时前
2026开发者实测:四大AI大模型API聚合网关SLA与延迟对决
api·api中转·api大模型·api大模型中转
winfredzhang3 天前
用 Python + DeepSeek AI 构建文件批量重命名与智能管理工具
python·api·重命名·预览·解压·deepseek
razelan3 天前
本地大模型系列:2.通过API让本地大模型为你服务
人工智能·api·ollama·本地大模型
新诺韦尔API3 天前
手机号携号转网接口对接常见问题一览
大数据·api
API开发3 天前
一个MCP操作所有的数据库
数据库·api·api接口·apisql·mcp·mcpserver·openclaw
DevnullCoffe4 天前
Open Claw × 跨境电商:5个最有价值的 AI Agent 应用场景深度拆解
python·api
Hommy885 天前
【剪映小助手】故障排除与常见问题
aigc·api·剪映小助手
Jumdata5 天前
短网址生成-短链接生成-ShortUrl生成-ShortLink生产接口API-永久短网址
api·短网址