CDE药品审批数据爬取分析项目——核心知识点和关联拓展知识点

CDE药品审批数据爬取分析项目——核心知识点和关联拓展知识点

    • 一、核心知识点(项目直接应用,逐点拆解)
      • (一)网络爬虫与HTTP通信(爬虫核心模块)
        • 1. requests库(HTTP请求核心)
        • 2. 请求头(Headers)构造(反爬关键)
        • 3. 反爬策略与应对(爬虫稳定性核心)
        • 4. HTTPS证书处理(urllib3)
        • 5. 响应内容处理(gzip压缩兼容)
      • (二)数据解析与结构化处理
        • 1. JSON数据解析(接口数据核心)
        • 2. 字典数据安全提取(数据清洗基础)
        • 3. 字符串清洗(非结构化数据处理)
      • (三)数据分析(Pandas核心模块)
        • 1. DataFrame构建(结构化存储核心)
        • 2. 分类数据统计(value_counts)
        • 3. 自定义分类统计(业务化分析核心)
        • 4. 数据筛选与布尔索引
        • 5. 数据排序与TOP N分析
      • (四)数据可视化(Matplotlib/Seaborn模块)
        • 1. 中文字体适配(可视化基础)
        • 2. 柱状图(barplot)绘制与标注
        • 3. 饼图(pie)绘制
      • (五)工程化编程与文件操作
        • 1. 模块化函数设计(代码架构核心)
        • 2. 文件路径与目录操作(os库)
        • 3. CSV文件保存(Pandas)
      • (六)异常处理(程序稳定性核心)
    • 二、关联拓展知识点(进阶/同类替代方案,超详细)
      • (一)爬虫进阶拓展
        • 1. requests.Session会话维持
        • 2. 异步爬虫(aiohttp)
        • 3. 代理IP池
      • (二)数据分析进阶拓展
        • 1. 数据透视表(pivot_table)
        • 2. 时间序列分析
      • (三)可视化进阶拓展
        • 1. 交互式可视化(Plotly)
        • 2. 地理可视化(pyecharts)
      • (四)工程化进阶拓展
        • 1. 配置文件管理(yaml)
        • 2. 日志模块(logging)
        • 3. 定时任务(APScheduler)
    • 三、知识点总结(核心要点回顾)

该项目是Python全流程数据应用实战,覆盖从网络数据采集到业务价值解读的完整链路,以下对所有知识点进行“定义+原理+项目应用+易错点+拓展”的四维拆解,确保每个知识点都讲透、讲全。

一、核心知识点(项目直接应用,逐点拆解)

(一)网络爬虫与HTTP通信(爬虫核心模块)

1. requests库(HTTP请求核心)
  • 定义:Python最常用的HTTP请求库,封装了底层的urllib,支持GET/POST/PUT等所有HTTP方法,语法简洁。
  • 核心原理:模拟浏览器与服务器的HTTP交互,发送请求报文→接收响应报文→解析响应内容。
  • 项目应用
    • requests.post(url, headers=headers, data=post_data, timeout=15, verify=False):发送POST请求,参数说明:
      • url:CDE药品审批接口地址;
      • headers:模拟浏览器的请求头(核心反爬配置);
      • data:POST表单参数(页码、分页大小等);
      • timeout=15:设置15秒超时,避免请求卡死;
      • verify=False:跳过HTTPS证书验证(解决CDE官网证书问题)。
    • r.encoding = r.apparent_encoding:自动识别响应编码,避免中文乱码。
    • r.status_code:判断响应状态码(200为成功,非200则输出失败信息)。
  • 易错点
    • 忘记设置timeout:请求可能因网络问题无限等待,导致程序卡死;
    • 未处理r.status_code:接口返回403/500时,仍尝试解析数据,引发后续错误。
  • 拓展requests.get()(GET请求,参数拼在URL)、requests.session()(会话维持,见拓展模块)。
2. 请求头(Headers)构造(反爬关键)
  • 定义:HTTP请求报文的头部信息,包含客户端标识、请求来源、数据格式等,是服务器验证请求合法性的核心依据。
  • 核心原理:服务器通过Headers识别请求是否来自“合法浏览器”,而非爬虫程序。
  • 项目应用:构造的核心Headers字段及作用:
    字段名取值示例核心作用
    User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64)…伪装浏览器(Chrome/Edge),避免被识别为爬虫
    Refererhttps://www.cde.org.cn/main/xxgk/listpage/…告诉服务器请求来源页面,防跨域/防直接请求接口
    Originhttps://www.cde.org.cn告诉服务器请求的源域名,验证跨域合法性
    CookieFSSBBIl1UgzbN7N80S=BN6DrLZ4J10nZ…维持用户会话,部分接口需登录态才能访问
    Content-Typeapplication/x-www-form-urlencoded指定POST数据格式为表单格式
    X-Requested-WithXMLHttpRequest标识为AJAX异步请求,匹配接口的请求特征
  • 易错点
    • 遗漏Referer/Origin:接口验证来源,直接返回403 Forbidden;
    • Cookie过期:硬编码的Cookie失效后,请求返回登录页面,解析JSON失败。
  • 拓展:动态获取Cookie(通过登录接口模拟登录,自动更新Cookie)。
3. 反爬策略与应对(爬虫稳定性核心)
  • 定义:网站为防止爬虫过度请求而设置的限制机制,爬虫需通过技术手段规避。
  • 项目应用的反爬应对
    • 频率限制应对:time.sleep(random.uniform(1,2))——设置1-2秒随机间隔,避免固定间隔被识别为机器;
    • 伪装应对:完整Headers+浏览器User-Agent;
    • 异常应对:try-except捕获请求异常,跳过失败页继续爬取。
  • 易错点
    • 使用固定间隔(如time.sleep(1)):易被服务器识别为机器;
    • 无异常捕获:单页请求失败导致整个程序崩溃。
  • 拓展:IP代理池(应对IP封禁)、请求频率动态调整(根据响应状态码调整间隔)。
4. HTTPS证书处理(urllib3)
  • 定义:HTTPS请求需验证服务器证书,部分网站证书配置不规范会触发警告/报错。
  • 项目应用
    • urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning):关闭HTTPS不安全警告;
    • requests.post(verify=False):跳过证书验证,确保请求正常执行。
  • 易错点:仅关闭警告但未设置verify=False:请求仍会因证书问题失败。
  • 拓展:手动指定CA证书文件(verify='/path/cacert.pem'),提升安全性。
5. 响应内容处理(gzip压缩兼容)
  • 定义:服务器为减小传输体积,会将响应内容用gzip压缩,需解压后才能解析。
  • 项目应用
    try:returnr.text# 先尝试读取明文except:importgzipfromioimportBytesIO data=gzip.decompress(r.content)# 解压gzip压缩的二进制内容returndata.decode('utf-8')
  • 易错点:直接读取r.text而不处理压缩:返回乱码,JSON解析失败。
  • 拓展:自动识别响应头Content-Encoding(如gzip/deflate),针对性解压。

(二)数据解析与结构化处理

1. JSON数据解析(接口数据核心)
  • 定义:JSON(JavaScript Object Notation)是轻量级数据交换格式,键值对结构,与Python字典高度兼容。
  • 核心原理json.loads()将JSON字符串→Python字典/列表;json.dumps()将Python对象→JSON字符串。
  • 项目应用
    • get_data()函数中json.loads(medical_text):解析接口返回的JSON字符串,提取data.records核心数据;
    • json.dumps(..., ensure_ascii=False, indent=2):格式化输出JSON,ensure_ascii=False保证中文正常显示。
  • 异常处理
    exceptjson.JSONDecodeErrorase:print(f'JSON解析失败:{str(e)}')print(f'原始返回数据:{medical_text[:500]}')# 输出前500字符,定位解析失败原因
  • 易错点
    • 未捕获JSONDecodeError:接口返回非JSON数据(如HTML错误页)时,程序直接崩溃;
    • 忽略ensure_ascii=False:格式化输出时中文显示为\uXXXX编码。
  • 拓展jsonpath库(按路径提取JSON数据,如jsonpath.jsonpath(medical_data, '$..records'))。
2. 字典数据安全提取(数据清洗基础)
  • 定义:使用dict.get(key, default)提取字典值,避免键不存在引发KeyError
  • 项目应用
    drug_name=[record.get('drgnamecn','')forrecordinrecords]
    • record.get('drgnamecn', ''):若drgnamecn键存在,返回值;否则返回空字符串,避免列表生成式报错。
  • 易错点:直接使用record['drgnamecn']:键不存在时触发KeyError,中断数据提取。
  • 拓展:嵌套字典提取(如record.get('data', {}).get('records', [])),多层级安全取值。
3. 字符串清洗(非结构化数据处理)
  • 定义:对不规则字符串进行拆分、去空格、过滤等操作,转为结构化数据。
  • 项目应用
    company=[record.get('companys','').strip(';').split(';')[0]forrecordinrecords]
    • strip(';'):去除字符串首尾的;
    • split(';')[0]:按;拆分多企业名称,只取第一个企业。
  • 易错点
    • 未处理空字符串:record.get('companys', '')为空时,split(';')[0]仍返回空,需结合业务判断是否合理;
    • 拆分后索引越界:如字符串为;时,split(';')[0]为空,需加判断。
  • 拓展:正则表达式(re库)清洗复杂字符串(如提取企业名称中的省份、过滤特殊字符)。

(三)数据分析(Pandas核心模块)

1. DataFrame构建(结构化存储核心)
  • 定义:Pandas的核心数据结构,二维表格型数据,行表示样本,列表示特征,支持高效的统计、筛选、排序。
  • 项目应用
    df=pd.DataFrame({'序号':row_id,'药品名称':drug_name,'申报企业':company,'药品类型':drug_type,'申请类型':apply_type,'受理号':accept_id,'申报日期':create_date,'注册类型':register_kind})
    • 将提取的7个核心字段整合为DataFrame,实现从“列表/字典”到“表格”的结构化转换。
  • 易错点
    • 字段长度不一致:如row_id长度与drug_name不一致,会触发ValueError
    • 空值未处理:后续统计时需注意NaN值的影响。
  • 拓展pd.DataFrame.from_dict()(从字典列表直接构建DataFrame)、pd.read_json()(从JSON直接构建)。
2. 分类数据统计(value_counts)
  • 定义:统计Series中每个唯一值的出现次数,返回降序排列的结果,是分类数据分析的核心方法。
  • 项目应用
    drug_type_count=df["药品类型"].value_counts()# 统计各药品类型的数量apply_type_count=df["申请类型"].value_counts()# 统计各申请类型的数量
  • 易错点
    • 未处理空值:value_counts()默认排除NaN,需用value_counts(dropna=False)包含空值;
    • 混淆绝对数与相对数:value_counts()返回绝对数,需手动计算占比。
  • 拓展value_counts(normalize=True)直接返回占比(百分比)。
3. 自定义分类统计(业务化分析核心)
  • 定义:基于业务规则(如关键词匹配)对数据进行自定义分类,再统计各类别的数量。
  • 项目应用:企业地区匹配统计:
    1. 构建province_map字典:键为地区(省份/国家),值为匹配关键词;
    2. 遍历企业名称,匹配关键词确定所属地区;
    3. province_count字典统计各地区数量。
  • 核心代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1162418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QGroundControl地面站软件:从零开始的飞行控制中心搭建指南

QGroundControl地面站软件:从零开始的飞行控制中心搭建指南 【免费下载链接】qgroundcontrol Cross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows) 项目地址: https://gitcode.com/gh_mirrors/qg/qgroundcontrol 想象…

UI-TARS桌面版完整配置指南:从零开始的智能GUI操作解决方案

UI-TARS桌面版完整配置指南:从零开始的智能GUI操作解决方案 【免费下载链接】UI-TARS-desktop A GUI Agent application based on UI-TARS(Vision-Lanuage Model) that allows you to control your computer using natural language. 项目地址: https://gitcode.c…

PDF书签批量编辑终极指南:从手动操作到自动化流程

PDF书签批量编辑终极指南:从手动操作到自动化流程 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等 项目地址: https://gitcod…

Qwen2.5金融场景应用案例:报表生成系统部署实操

Qwen2.5金融场景应用案例:报表生成系统部署实操 1. 引言 1.1 业务背景与痛点分析 在金融行业中,每日、每周和每月的报表生成是核心运营环节之一。传统方式依赖人工从多个数据源提取信息,再通过 Excel 或 BI 工具进行整理与格式化输出&…

FactoryBluePrints:戴森球计划工厂蓝图库的终极指南

FactoryBluePrints:戴森球计划工厂蓝图库的终极指南 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints 你是否在《戴森球计划》中为如何规划高效工厂而烦恼&#x…

从零开始:用OpenCode构建你的第一个AI编程项目

从零开始:用OpenCode构建你的第一个AI编程项目 1. 引言 在现代软件开发中,AI编程助手正逐渐成为开发者提升效率的重要工具。面对日益复杂的代码库和紧迫的交付周期,如何快速理解代码、生成高质量实现并有效调试问题,已成为每个开…

Res-Downloader:全网资源一键下载的终极解决方案

Res-Downloader:全网资源一键下载的终极解决方案 【免费下载链接】res-downloader 资源下载器、网络资源嗅探,支持微信视频号下载、网页抖音无水印下载、网页快手无水印视频下载、酷狗音乐下载等网络资源拦截下载! 项目地址: https://gitcode.com/GitH…

命令行把word导出为markdown的代码

用 pandoc 把 Word(.docx)导出为 Markdown,最常用、也最稳妥的命令如下:pandoc input.docx -o output.md

古籍数字化不求人:手把手教你搭建专业OCR处理流水线

古籍数字化不求人:手把手教你搭建专业OCR处理流水线 你是不是也遇到过这样的情况?图书馆里堆满了泛黄的古籍扫描件,字迹模糊、版式复杂,想把它们变成可搜索、可编辑的电子文本,结果发现市面上的商业OCR软件一识别就“…

开源向量模型新选择:Qwen3-Embedding-4B行业应用前瞻

开源向量模型新选择:Qwen3-Embedding-4B行业应用前瞻 1. 引言:文本嵌入技术的演进与Qwen3-Embedding-4B的定位 随着大语言模型在自然语言理解、信息检索和语义搜索等领域的广泛应用,高质量的文本嵌入(Text Embedding&#xff09…

bge-large-zh-v1.5避坑指南:部署常见问题全解析

bge-large-zh-v1.5避坑指南:部署常见问题全解析 1. 引言:为何需要一份避坑指南? bge-large-zh-v1.5作为当前表现优异的中文文本嵌入模型,凭借其在语义理解、长文本处理和跨领域适应性上的优势,已被广泛应用于检索增强…

BoostNote深度解析:开发者必备的Markdown笔记管理神器

BoostNote深度解析:开发者必备的Markdown笔记管理神器 【免费下载链接】BoostNote-Legacy This repository is outdated and new Boost Note app is available! Weve launched a new Boost Note app which supports real-time collaborative writing. https://githu…

UI-TARS桌面版终极指南:用语音掌控你的电脑

UI-TARS桌面版终极指南:用语音掌控你的电脑 【免费下载链接】UI-TARS-desktop A GUI Agent application based on UI-TARS(Vision-Lanuage Model) that allows you to control your computer using natural language. 项目地址: https://gitcode.com/GitHub_Trend…

Qwen视觉模型适合医疗影像吗?X光分析可行性探讨

Qwen视觉模型适合医疗影像吗?X光分析可行性探讨 1. 引言:AI多模态技术在医疗场景的潜力与挑战 随着大模型技术的发展,视觉语言模型(Vision-Language Model, VLM)逐渐从通用图文理解向专业领域延伸。Qwen系列推出的 Q…

Campus-iMaoTai智能预约系统:零基础开启全自动茅台抢购新时代

Campus-iMaoTai智能预约系统:零基础开启全自动茅台抢购新时代 【免费下载链接】campus-imaotai i茅台app自动预约,每日自动预约,支持docker一键部署 项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai 还在为i茅台app…

DCT-Net模型更新:自适应风格迁移的新特性

DCT-Net模型更新:自适应风格迁移的新特性 1. 引言 1.1 技术背景与演进趋势 随着深度学习在图像生成领域的持续突破,人像风格化技术已从早期的固定滤镜式处理,逐步发展为基于神经网络的端到端风格迁移系统。传统方法如卷积神经网络&#xf…

终极指南:如何快速掌握Res-Downloader一站式资源下载工具

终极指南:如何快速掌握Res-Downloader一站式资源下载工具 【免费下载链接】res-downloader 资源下载器、网络资源嗅探,支持微信视频号下载、网页抖音无水印下载、网页快手无水印视频下载、酷狗音乐下载等网络资源拦截下载! 项目地址: https://gitcode.…

IQuest-Coder-V1在教育培训中的应用:编程教学助手部署

IQuest-Coder-V1在教育培训中的应用:编程教学助手部署 1. 引言:AI驱动编程教育的范式转变 随着人工智能技术的快速发展,大语言模型(LLM)正逐步渗透到教育领域,尤其是在编程教学中展现出巨大潜力。传统的编…

智能资源嗅探工具:跨平台下载神器全面解析

智能资源嗅探工具:跨平台下载神器全面解析 【免费下载链接】res-downloader 资源下载器、网络资源嗅探,支持微信视频号下载、网页抖音无水印下载、网页快手无水印视频下载、酷狗音乐下载等网络资源拦截下载! 项目地址: https://gitcode.com/GitHub_Tre…

开箱即用!Qwen All-in-One零配置部署情感分析+对话系统

开箱即用!Qwen All-in-One零配置部署情感分析对话系统 在边缘计算与轻量化AI服务日益重要的今天,如何在资源受限的环境中实现多任务智能推理,成为开发者关注的核心问题。传统方案往往依赖“多个模型堆叠”——例如使用BERT做情感分析、LLM处…