思路:打开药监总局输入URL爬取的并不能获得全部信息,说明页面存在动态加载 由Ajax请求的 通过抓包查看。通过首页域名+id 可以获得企业详情页的信息 id可以通过首页获取到,验证刚才获得的URL看一下是否是动态加载 看抓包工具 查找数据发现URL得不到 也是动态加载的,多找几个类比一下 观察URL和参数。如何批量获取企业ID?在首页的数据中。
import requests import json from fake_useragent import UserAgent if __name__ =="__main__": id_list = [] firm_detail_list = [] user = UserAgent() headers = { 'User-Agent' : user.random } url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList' # 1.获取ID for page in range(1,9): page = str(page) data = { 'on': 'true', 'page': page, 'pageSize': '15', 'productName':'' , 'conditionType': '1', 'applyname': '', 'applysn': '', } onepage_response = requests.post(url=url, headers=headers, data=data) onepage_json_ids = onepage_response.json() # 查看数据类型是字典 for dic in onepage_json_ids['list']: id_list.append(dic['ID']) # 2. 获取企业详情 这里仅以打印1-8页为例 firm_url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById' for id in id_list: data = { 'id':id } detail_json = requests.post(url=firm_url, headers=headers, data=data).json() #dictinary firm_detail_list.append(detail_json) fp = open('./allDATA.json', 'w', encoding='utf-8') json.dump(firm_detail_list, fp, ensure_ascii=False) print("Done.........")
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)