京东搜索关键词

你现在关注的是京东爬虫中的关键词相关知识点,包括关键词的 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变量为不同优化后的关键词,即可获取对应的商品列表。
相关推荐
网安情报局3 小时前
告别排队与高延迟:直连GPT全系列,解锁低门槛、高稳定的AI生产力
人工智能·gpt·api·ai大模型
天空属于哈夫克31 天前
企微 RPA 接口开放:无需官方权限,外部群自由操作
自动化·企业微信·api
ZorChi1 天前
AI API 调用优化实战:统一入口与超时处理指南
人工智能·aigc·接口·api·agent·token·中转站
Resistance丶未来1 天前
管控用量,降本增效,MAI Gateway:助力企业搭建 Tokens 统一管理体系
人工智能·大模型·api·claude·ai安全·魔芋ai·maigateway
星浩AI2 天前
Agnes AI 免费 API 接入指南:文本、生图、生视频,一套接口全免费
llm·api·claude
触底反弹3 天前
大模型时代:5 个 Prompt 替代 BERT 训练,搞定 NLP 五大任务
人工智能·node.js·api
极连AI3 天前
国产大模型譬如DeepSeek接入codex教程分享
人工智能·gpt·chatgpt·api·token·极连ai·zovelox.com
MageGojo3 天前
OCR 火车票识别 API 服务介绍与使用考量
ocr·接口·api·数据提取·火车票识别
147API4 天前
Project Glasswing 扩展后,AI 安全扫描不能只看发现漏洞
人工智能·安全·api·claude
小二·4 天前
OpenAI API 实战指南
ai·openai·api