爬虫 利用python爬取药监总局所列化妆品公司详细信息

问题描述:
利用python来爬取药监总局所列化妆品公司详细信息
 需要爬取的页面
需要爬取的页面
问题分析:
  分析网页发现,在http://scxk.nmpa.gov.cn:81/xk/页面以分页的形式展示了所有化妆品公司。
   #1.其化妆品公司的数据并非通过上述网址获取的,而是页面通过http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList发送
#ajax请求获取的
   #2.我们要获取的是化妆品公司的详细信息,点入一个公司链接,分析发现其详细信息也是通过ajax请求获取的,其中以每个公司不同的ID来区别获取详细信息   #3.我们要获取的是所有化妆品公司信息,因此需要实现分页获取
   #4.如何取得所有公司的具体ID号
   #5持久化存储,此处我是把内容分别以json格式存储和存入到excel表格中

import csv

import requests
import json
#该案例是来爬取药监总局所列化妆品公司详细信息
#分析网页发现,在http://scxk.nmpa.gov.cn:81/xk/页面以分页的形式展示了所有化妆品公司,
    #1.其化妆品公司的数据并非通过上述网址获取的,而是页面通过http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList发送
    #ajax请求获取的
    #2.我们要获取的是化妆品公司的详细信息,点入一个公司链接,分析发现其详细信息也是通过ajax请求获取的,其中以每个公司不同的ID来区别获取详细信息
    #3.我们要获取的是所有化妆品公司信息,因此需要实现分页获取
    #4.如何取得所有公司的具体ID号

url ="http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList"
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"
}
id_list=[]
for i in range(1,10):   #获取多页数据
    param={
        'on': 'true',
        'page': i,
        'pageSize': '15',
        'productName':'',
        'conditionType': '1',
        'applyname':'',
        'applysn':''
    }
    response=requests.post(url=url,params=param,headers=Headers)
    dict_obj=response.json()
    for dict in dict_obj['list']:
        id_list.append(dict['ID'])    #获取企业id号,并且存入到id_list集合中

urls = "http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById"

#持久化存储
    #用于把数据存储到excel表格中
out = open('demo4.csv', 'a', newline='')
csv_write = csv.writer(out, dialect='excel')
dict_details=[]
for id in id_list:      #遍历id,通过id获取详细信息,并把信息存入到dict_details集合中
    data={
        'id': id
    }

    response = requests.post(url=urls,headers=Headers,data=data).json()
    epsName=response['epsName']         #只是展示效果,因此这里只选择了两项信息进行写入表格
    businessPerson=response['businessPerson']
    j_str = (str(epsName),str(businessPerson))
    csv_write.writerow(j_str)
    dict_details.append(response)
fb=open('./demo4.json','w',encoding='utf-8')
json.dump(dict_details,fp=fb,ensure_ascii=False)
print('over!!!')

结果展示:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值