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:

通过对比能够很明显看出三者的区别仅为后面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
},

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值