python爬取三元组数据笔记(三)

python爬取三元组数据笔记(三)

需求:爬取国家药品监督管理总局中基于中华人民共和国化妆品生产许可证相关数据
http://125.35.6.84:81/xk/
分析:首先确定页面上的信息是那个url响应的。我们直接导入http://125.35.6.84:81/xk/ 的url发现没有数据。在network中寻找真正的url地址,发现信息是由ajax请求的。
其次,打开链接详情页
url的域名都是一样的,只有携带的参数(id)不一样
id值可以从首页对应的ajax请求到json串中获取
域名和id值拼接处一个完整的企业对应的详情页的url
详情页中的页面信息,也是动态加载的,对应ajax请求的数据包,可以捕获出来。
打开多个页面的详情信息,发现,所有的post请求的url都是一样的,只有id值不同
思路:由前台界面批量获取id后,再将id与url合成一个完整的新的url域名,再次进行ajax
请求就可以得到页面的详情信息。
由于目前无法打开网址界面,所以url里面是文字形式

import requests
import json
if __name__ == '__main__':
    #h获取不同企业的id值
    url = '首页面的网址'
    # UA伪装
    headers = {
        'User-Agent': ''
    }
    all_data_list = []  # 存储企业的id
    #参数的封装
    #循环获取所有页面的id
    for page in range(1,327):
        page = str(page)
        data = {
            'on' : 'true',
            'page':page,
            'pageSize':'15',
            'productName':'',
            'conditionType':'1',
            'applyname':'',
            'applysn':'',
        }
        json_ids = requests.post(url=url,headers=headers,data=data).json()
        for dic in json_ids['list']:
            id_list.append(dic['ID'])#获取ID

    #获取企业详情数据
    post_url = '点击详情页的时候获取的url'
    for id in id_list:#遍历id_list数组
        data = {
            'id':id
        }
        detail_json = requests.post(url=post_url,headers=headers,data=data).json()
        #print(detail_json)
        #持久化存储all data list
        all_data_list.append(detail_json)

    fp = open('./allData.json','w',encoding='utf-8')
    json.dump(all_data_list,fp=fp)
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值