源代码

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

# 需求:获取化妆品生产许可企业信息
# 内容包含:1. 用页面1的内容作为参数,到页面2获取数据 2.翻页爬取

# noinspection PyUnresolvedReferences
import json
import requests

if __name__ == '__main__':
    # UA伪装:将访问对象伪装为浏览器
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
    }
    # 爬虫主体
    url = "http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList"
    id_list = []  # 存所有公司的id
    url2 = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById'
    all_data_list = []  # 用于存放最终数据
    num=0; #统计一共几条数据
    for page in range(1,4) :#需要爬取的页码范围(本例为 1 2 3 页)
        page=str(page) #转换为字符串
        data = {
            'on': 'true',
            'page': page,
            'pageSize': '15',
            'productName': '',
            'conditionType': '1',
            'applyname': '',
            'applysn': ''
        }
        #获取当前页面的信息,取出所有公司的id
        dic_json_ids = requests.post(url=url, data=data, headers=headers).json()
        for dic in dic_json_ids['list']:
            id_list.append(dic['ID'])
            num=num+1

    #将获取到的id作为参数,到页面2获取详细信息
    for id in id_list:
        data={
            'id':id
        }
        detail=requests.post(url=url2,data=data,headers=headers).json()
        #print(detail)
        all_data_list.append(detail)

    #数据持久化
    fp=open('化妆品生产许可企业名单.json','w',encoding='utf-8')
    json.dump(all_data_list,fp=fp,ensure_ascii=False)

    print('爬取完毕!,共%d条数据',num);

结果:

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐