爬取药品监督情况数据

2023-11-19

首先打开国家药品监督局的相应网址
国家药品监督局的相应网址
国家药品监督的相应页面找到某一家企业点击相应的许可证编号那一个栏目,查看相应的许可证情况
相应的许可证情况上面对应的内容为我们需要爬取的对应的数据
不确定对上述的网页进行访问的时候,我们能够得到对应的企业名称,许可证编号,发证机关等相应的数据,
这时候我们可以尝试着发一次请求,看看能否得到页面中对应的相应的数据

import  requests
import  json
url = 'http://scxk.nmpa.gov.cn:81/xk/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'
}
page_text = requests.get(url=url,headers=headers).text
with  open('./huazhuangpin.html','w',encoding='utf-8') as fp:
    fp.write(page_text)

打开之后发现通过requests爬取到的页面之中并没有对应的企业名称等内容,
爬取到的相应的页面说明这些数据并不是通过url获取到的,而是通过别的方式获取到的,很有可能通过阿贾克斯请求到的。
接下来使用相应的抓包工具查看相应的数据
抓包工具抓取的相应的数据首先我们查看第一个xk/的对应的内容
xk/对应的内容可以看出xk/返回的正好是对应相应的源代码的数据,也就是我们之前访问对应的url返回的相应的数据。
复制相应的公司,在源代码之中进行相应的搜索
源代码之中搜索相应的公司可以发现对应公司的内容在源代码之中并没有能够相应的搜索到,意味着通过这个url请求到的数据包没有搜索到相应的企业信息,爬取的数据为动态加载出来的。
如果在整个界面使用ctrl+f,可以直接搜索整个界面不同组件相应的内容,这样就可以直接搜索到能够获取相应数据的对应组件,进而获取到相应的得到信息的方式
搜索整个界面不同组件的相应内容分析第二个相应的页面发现
分析第二个页面输入的数据对应的请求为相应的post请求,需要传入的数据为相应的id的数据,所以只需要从第一个页面提取到的数据之中提取出相应的id数值即可
完整的代码如下

import  requests
import  json
url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'
}
param = {
    'method':'getXkzsList'
}
data = {
    'on':'true',
    'page':'1',
    'pageSize':'15',
    'productName':'',
    'conditionType':'1',
    'applyname':'',
    'applysn':'',
}
response = requests.post(url=url,params=param,data=data,headers=headers)
page_text = response.json()
#现在page_text为得到的一个对应的json文件
#获取第一个界面相应的json数据,并得到json之中相应的list属性,因为
#list属性之中存放着相应的id的对应的内容
lists = page_text['list']
print('lists = ')
print(lists)
#with  open('./huazhuangpin.json','w',encoding='utf-8') as fp:
#    fp.write(str(page_text))
for  i  in  range(len(lists)):
    currentid = lists[i]['ID']
    print(currentid)
    url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do'
    param = {
        'method':'getXkzsById'
    }
    data = {
        'id':currentid
    }
    response = requests.post(url=url,params=param,data=data,headers=headers)
    print(response.json())
#获取每一个list之中对应id内容之后,对于第二个界面使用post获取相应的json数据
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

爬取药品监督情况数据 的相关文章

  • [渗透]CVE-2020-1938/CNVD-2020-10487:Apache Tomcat AJP连接器远程执行代码漏洞

    受影响版本 Apache Tomcat 6 Apache Tomcat 7x lt 7 0 100 Apache Tomcat 8x lt 8 5 51 Apache Tomcat 9x lt 9 0 31 未受影响版本 Tomcat 7
  • 设计模式(十)装饰器模式

    装饰器模式是一种非常有用的结构型模式 它允许我们在不改变类的结果的情况下 为类添加新的功能 我们来举例说明一下 首先添加一组形状 它们都实现了形状接口 public interface Shape String getShape class
  • QT使用emit时发生内存泄露

    1 场景 在QT里面使用多线程进行编程时 子线程执行的函数里面使用了emit发生了内存泄露 2 主要原因 在使用子线程时 线程使用了join 来等待子线程完成 这样使用emit也不会发送信号 因为join 是阻塞的 必须等待当前线程完成 3
  • iOS逆向工程之App脱壳

    本篇博客以微信为例 给微信脱壳 砸壳 在iOS逆向工程中是经常做的一件事情 因为从AppStore直接下载安装的App是加壳的 其实就是经过加密的 这个 砸壳 的过程就是一个解密的过程 未砸壳的App是无法在Class dump Hoppe
  • Android多进程(一)—— 开启多进程

    Android多进程 一般情况下 一个应用程序就是一个进程 进程名就是应用程序的包名 进程是系统分配资源的基本单位 每个进程都有自己独立的资源和内存空间 1 Android开启多进程的原因 单进程分配的内存不够 需要更多的内存 早期的And
  • STM32H750+LAN8720无操作系统移植lwip

    前言 本文提供移植好的工程 仅使用串口和以太网外设 见本文绑定资源 环境 STM32CubeMX V6 8 1 STM32H7 HAL Pack V1 11 1 硬件连接 STM32H750 GPIO定义如下 LAN8720 GPIO定义如
  • 使用匿名函数动态设置前置或者后置操作(装饰器模式的)

    我的个人博客 逐步前行STEP 在维护另一个同事的代码时 由于代码量比较大而且封装程度低耦合高 维护起来不太顺手 就怕哪没注意把现有的逻辑改坏了 受到laravel admin的保存回调功能的启发 想到了使用匿名函数来动态设置前置或者后置操
  • 一文带你看懂细粒度分类网络Learning Attentive Pairwise Interaction(AAAI)

    论文 https arxiv org abs 2002 10191 引用或转载请注明出处
  • [Vue warn]: Error in render: “TypeError: cellValue.replaceAll is not a function

    去除中括号 如 车门 车门 let reg new RegExp g return str replaceAll reg 上面方法 在edge浏览器 谷歌浏览器没问题 但是在搜狗和QQ浏览器就报错 解决办法 return str repla
  • unity中Input类

    这个是鼠标与键盘按键的一些操作 void Update 获取鼠标在屏幕中的位置 Vector3 mousePos Input mousePosition print mousePos 获取屏幕的宽 Screen width 获取屏幕的高 S
  • 【技术经验分享】计算机毕业设计Python+Spark视频推荐系统 短视频推荐系统 视频流量预测系统 短视频爬虫 视频数据分析 视频可视化 视频大数据 大数据毕业设计 大数据毕设

    开发技术 前端 vue js websocket element ui echarts 后端 springboot mybatis plus 数据库 mysql neo4j图数据库 知识图谱 数据分析 hadoop spark实时计算 算法
  • TscanCode代码扫描工具

    TscanCode介绍 TscanCode 是腾讯研发的静态代码扫描工具 最早的版本是基于 cppcheck 二次开发 之后又重新自研 不仅支持 C 还支持 C Lua 语言 在发掘 C 空指针 越界 未初始化 C 空引用 Lua变量未初始
  • 活动报名|如何使用70万预算从头训练千亿语言大模型

    王业全 北京智源人工智能研究院认知模型团队负责人 清华大学博士 中国中文信息学会情感计算专委会委员 2022年被评为AI 2000全球最具影响力人工智能学者 自然语言处理领域 主要从事语言大模型 自然语言处理方面的研究工作 代表成果有 FL
  • shell脚本读取csv数据迁移文件

    前言 仅记录学习笔记 如有错误欢迎指正 最近 这段时间一直在忙数据迁移的问题 现在碰见的问题是需要将目标服务器上的文件导入到本地库 思路 我们需要的数据不多 但是服务器上特别多 所以通过查询目标文件的目录位置和文件名称 导出为csv文件 之
  • Vue + ElementUI 实现批量删除功能

    第一步 在el table 组件绑定 selection change事件 第二步 在调用父组件的子组件中添加当表格项发生变化时会触发事件函数 selectionChange val 在method 函数中添加如下代码 selectionC
  • 从零基础开始开发自己的第一个微信小程序

    文章目录 内容介绍 小程序开发步骤 注册微信小程序账号 下载开发工具搭建开发环境 创建工程编写代码 手机上查看效果 工程里的文件作用介绍 总结 内容介绍 通过本篇blog 你可以熟悉从零开始 搭建小程序开发环境 并运行起自己的第一个小程序
  • QT中slot,signal,emit讲解

    Qt中的类库有接近一半是从基类QObject上继承下来 信号与反应槽 signals slot 机制就是用来在QObject类或其子类间通讯的方法 作为一种通用的处理机制 信号与反应槽非常灵活 可以携带任意数量的参数 参数的类型也由用户自定
  • 条码编码-Code39

    近来在研究条码的实现 遇到一些坑 现在把自己遇到的一些情况分享一下 世界上约有225种以上的条形码 一般较流行的有 39码 EAN码 UPC 码 128码 以及专门用於书刊管理的ISBN ISSN等 我们先从Code39码开始 Code39

随机推荐