这次为大家带来的是一个综合性较强的小项目,该项目流程较多且不需要用数据解析也能完成。由于该项目涉及到他人的隐私信息,故不会有对应信息的截图,敬请理解!
项目案例实现|Python爬虫 04:爬取药监局官网中化妆品生产许可信息
项目来源
本项目来源B站UP主路飞学城视频:视频链接点这里
项目需求
- 爬取所有生产化妆品的公司的企业名称和生产许可证编号
- 爬取每一家企业的详情页的生产许可证信息详细数据
具体分析
1. 指定URL
1.1 初始页面目标URL的获取
打开药监局化妆品生产许可信息管理系统服务平台:http://scxk.nmpa.gov.cn:81/xk/
打开抓包工具对页面发送请求,在响应数据中尝试搜索具体公司名称发现为空,初步判断企业名称等数据为ajax请求,打开对应数据抓取工具,再次发请求后拿到对应的数据包。

在headers板块中可获得对应需求1的目标URL,将其粘贴至代码段即可。在该板块中可以继续获得如下信息:
- 发送的请求为post请求
- 得到的响应数据为json格式
- post请求携带的参数有:
on: true
page: 1
pageSize: 15
productName:
conditionType: 1
applyname:
applysn:
1.2 详情页面目标URL的获取
下面随机点开一家公司的详情页,以首页的第一家公司为例。
详情页URL:http://scxk.nmpa.gov.cn:81/xk/itownet/portal/dzpz.jsp?id=2bb25030a84e4c13a1dfff05d837cba1
再打开两家公司的URL:
- http://scxk.nmpa.gov.cn:81/xk/itownet/portal/dzpz.jsp?id=61679e8db15b4746a193dadeb29b3913
- http://scxk.nmpa.gov.cn:81/xk/itownet/portal/dzpz.jsp?id=35eb560d1cc742daa2fb71c878b9da35
通过对比能够很明显看出三者的区别仅为后面id参数值不同,据此可猜测这个id就是每一家公司详情页URL的一个参数。
下面利用抓包工具对第一家公司详情页发请求,在拿到的数据包里的响应数据中查找公司名称等数据,发现依旧无结果返回,则这些数据极有可能也存在一个ajax包里。打开对应抓包工具,再次发请求,拿到对应数据包。

在headers板块中即可获得需求2的URL,同时还可以获取以下信息:
- 发送的请求同样为post请求
- 返回的响应数据为json格式
- post请求携带的参数为企业的id值
2. UA伪装
依旧与以前一样进行UA伪装即可,此处不再写出
3. 对概览页目标信息的获取
根据前面的分析可初步得知,为了爬取到我们所需要的信息,首先需要获取每一家企业的id值。用抓包工具获取在概览页中请求到的ajax包里的响应数据,并用json解析器解析后,得如下结果(以下只列出一部分结果,数目太多占篇幅)
{
“filesize”: “”,
“keyword”: “”,
“list”: [{
“ID”: “2bb25030a84e4c13a1dfff05d837cba1”,
“EPS_NAME”: “艾一生命科技(广东)有限公司”,
“PRODUCT_SN”: “粤妆20210025”,
“CITY_CODE”: null,
“XK_COMPLETE_DATE”: {
“date”: 21,
“day”: 4,
“hours”: 0,
“minutes”: 0,
“month”: 0,
“nanos”: 0,
“seconds”: 0,
“time”: 1611158400000,
“timezoneOffset”: -480,
“year”: 121
},
“XK_DATE”: “2026-01-20”,
“QF_MANAGER_NAME”: “广东省药品监督管理局”,
“BUSINESS_LICENSE_NUMBER”: “91440300MA5F0H5AXJ”,
“XC_DATE”: “2021-01-21”,
“NUM_”: 1
},

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



