解析国家药监局化妆品公司许可信息

所谓掌握了requests库就等于掌握了爬虫的半壁江山
所以本例选用requests库

  • 之所以拿“国药监”网站来进行学习是因为,我们要获取的数据均是post请求且采取Ajax的方式在页面间传递,还在于我们要解析的数据需要两次请求,所以这就很考研对问的深究能力,综合性一般
  • 据分析可以得出,我们在第一次请求的时候要拿的是,公司数据对应的id
  • 第二次我们根据id去请求相应的数据
  • 需要注意的是,我们所得到的是json类型
  • 在本例的最后,可以对已经获取的数据进行分析,得到自己想要的数据
  • 因本例的学习性质,所以不再将数据进行分析
#!/usr/bin/env python
# encoding: utf-8

"""
@file: 国家药监局化妆品公司许可信息.py
@time: 2020/2/23 21:58
"""

import requests


def post_GY():
    # 批量获取企业id
    url = "http://125.35.6.84: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/80.0.3987.116 Safari/537.36'
    }

    id_list = []  # 暂存企业id
    word = int(input('请输入想要爬取的页数:'))
    for page in range(1, word + 1):
        page = str(page)
        data = {
            'on': 'true',
            'page': page,
            'pageSize': '15',
            'productName': '',
            'conditionType': '1',
            'applyname': '',
            'applysn': ''
        }

        json_ids = requests.post(url=url, data=data, headers=headers).json()
        for dic in json_ids['list']:
            id_list.append(dic['ID'])

    # 获取企业详情数据
    post_url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById'
    for id in id_list:
        dat_id = {
            'id': id
        }
        detail_json = requests.post(url=post_url, data=data_id, headers=headers).json()
        print(detail_json)
    print('解析完成!')


if __name__ == '__main__':
    post_GY()

未经允许不得擅用

发布了48 篇原创文章 · 获赞 55 · 访问量 4491

猜你喜欢

转载自blog.csdn.net/qq_43562262/article/details/104463156
今日推荐