本文主要是介绍爬取食品药监局首页企业详情数据(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天的主要学习内容就是修改第一次的爬虫代码。
第一次爬取是获得首页全部的企业信息数据,那么这次就是要获得全部的企业信息数据;
第一步,要得到每一家企业的ID,通过访问URL地址,获得每一家企业的ID,存放在列表里面;
URL ='http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList'
第二步,遍历存放企业ID的列表,访问企业详情页URL地址,获得每一家企业详细信息,最后存放在JSON文件中。
req_url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById'
一共有5783条数据,一共是385页,也就是需要循环385次访问URL地址,以此来获得所有企业的ID。
再通过遍历ID,访问req_url 地址爬取每一家企业的详细页;
完整代码如下:(我这里简单举例,访问前30页的哈~)
import requests
import json
#? UA伪装
headers = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36'"
}
#! 获取每一家企业的ID URL地址
URL ='http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList'company_id_list = [] #? 存储每一家企业的ID
All_company = [] #? 存储所有公司的数据#? 修改pam数据,动态获取所有页面的数据
for page in range(1,30):pam = {'on': 'true','page': str(page), #? 第一页'pageSize': '15', #? 每一页最大企业'productName':'' ,'conditionType': '1','applyname':'', 'applysn':'', }#? 第一步,先爬取每一家企业的ID,JSON文件,然后保存到一个列表里面resp = requests.post(url=URL,data = pam,headers=headers)page_json_id = resp.json()for dic in page_json_id['list']:company_id_list.append(dic['ID'])#? 第二步,爬取每一家企业的详细页
req_url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById'
All_company = [] #? 存储所有公司的数据
for ele in company_id_list:pam = {'id':ele}company_resq = requests.post(url=req_url,data=pam,headers=headers)page_company = company_resq.json()All_company.append(page_company)fp = open('./company.json','w',encoding='utf-8')
json.dump(All_company,fp=fp,ensure_ascii=False)
print("over ~~")
这篇关于爬取食品药监局首页企业详情数据(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!