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

抓取NMPA进口医疗器械数据遇API通信失败及动态参数获取问题

解决方案

核心思路:你提到的GBK-开头的动态参数是服务器下发的会话绑定参数,没有前端加密逻辑,直接从初始列表页的响应内容中提取即可,参数和当前请求会话的Cookie绑定,需要保持同一会话发起请求。

具体实现步骤

  • 用requests.Session()创建会话,保持Cookie同步,避免参数失效
  • 先请求目标站点的初始入口页,从返回的HTML中用正则匹配提取完整的6SQk6G2z参数值
  • 拼接成完整的POST请求URL后,即可正常发起翻页请求
  • 若请求过程中出现参数失效的情况,重新请求一次初始页提取新的参数即可

可运行完整代码

import requests
import re

# 创建会话保持cookie同步
session = requests.Session()
# 初始入口页地址
base_url = "http://app1.nmpa.gov.cn/data_nmpa/face3/base.jsp?tableId=27&tableName=TABLE27&title=%E8%BF%9B%E5%8F%A3%E5%8C%BB%E7%96%97%E5%99%A8%E6%A2%B0%E4%BA%A7%E5%93%81%EF%BC%88%E6%B3%A8%E5%86%8C&bcId=152904442584853439006654836900"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0",
    "Accept": "*/*",
    "Accept-Language": "en-US,en;q=0.5",
    "cache-control": "no-cache",
    "Content-Type": "application/x-www-form-urlencoded",
    "Pragma": "no-cache"
}

# 请求初始页提取动态参数
base_resp = session.get(base_url, headers=headers)
# 调整编码为GBK避免乱码
base_resp.encoding = "GBK"
# 正则匹配6SQk6G2z参数的完整值
param_match = re.search(r'search\.jsp\?6SQk6G2z=(GBK-[^"]+)', base_resp.text)
if not param_match:
    raise Exception("动态参数提取失败,请检查入口页是否可正常访问")
dynamic_param = param_match.group(1)

# 拼接完整请求URL
url = f"http://app1.nmpa.gov.cn/data_nmpa/face3/search.jsp?6SQk6G2z={dynamic_param}"

data = {
    "tableId": "27",
    "State": [
        "1",
        "1",
        "1",
        "1",
        "1",
        "1",
        "1"
    ],
    "bcId": "152904442584853439006654836900",
    "tableName": "TABLE27",
    "viewtitleName": "COLUMN200",
    "viewsubTitleName": "COLUMN192,COLUMN199",
    "curstart": "2",  # 此处修改为目标页码
    "tableView": "进口医疗器械产品(注册"
}

r = session.post(url, headers=headers, data=data)
# 调整响应编码
r.encoding = "GBK"
print(r.text)

注意事项

  • 单次提取的动态参数仅在当前会话有效期内可用,会话过期后重新请求初始页提取即可
  • 不要频繁发起请求,避免触发站点的反爬限制
  • 抓取数据请遵守站点相关使用规范,仅用于合法用途

内容的提问来源于stack exchange,提问作者αԋɱҽԃ αмєяιcαη

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 23:51:04