爬取药监总局中相关企业的详情信息

  • 爬取药监总局中相关企业的详情信息 http://scxk.nmpa.gov.cn:81/xk/
  • 需求分析
    • 确定页面中相关数据是否为动态加载
      • 相关的企业信息为动态加载
    • 通过抓包工具全局搜索定位到动态加载数据的数据包,提取到相关的url和请求参数
    • 通过对比几家企业详情页的url,发现只有请求参数id值不同
      • 可以使用同一个域名结合不同企业的id值拼接成企业详情页的url
      • 进一步判断详情页的数据是否为动态加载的
# 爬取药监总局中相关企业的详情信息 http://scxk.nmpa.gov.cn:81/xk/
# 其中一页的ajax请求url,翻页: http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList
# 详情页url: http://scxk.nmpa.gov.cn:81/xk/itownet/portal/dzpz.jsp?id=ff83aff95c5541cdab5ca6e847514f88(没用上)
# 企业ajax详情数据url: http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById


# 爬取一页
import requests

num = int(input('请输入要采集的页面数:'))

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36'
}
url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList'
for i in range(1,num+1):
    print('正在爬取第{}页的数据......'.format(i))
    # 进入界面
    data = {
        'on': 'true',
        'page': str(i),
        'pageSize': '15',
        'productName': '',
        'conditionType': '1',
        'applyname': '',
        'applysn':'',
    }
    companies_data = requests.post(url=url,headers=headers,data=data).json()
    
    # 爬取具体企业的详情信息
    msg_url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById'
    for company in companies_data['list']:
        data = {
            'id': company['ID']
        }
        msg_dic = requests.post(url=msg_url,headers=headers,data=data).json()
        print(msg_dic['epsName'] + ':' + msg_dic['legalPerson'])
原文地址:https://www.cnblogs.com/straightup/p/13660028.html