Python 爬虫学习入门(三)
爬取药监局上的化妆品数据
准备工作
网站链接:化妆品生产许可信息管理系统服务平台
目标: 爬取该页面中所有企业的详细信息
获取User-Agent:
获取首页URL:
通过审查发现,该页面是动态的json获取,在载入时,通过设置几个不同参数,会获取到一个json格式的数据。
获取详细页面的URL:
在获取到json格式的数据后,动态载入某个详细企业后,会根据json中的id作为参数,来获取到详细信息。
流程
- UA伪装
- 发送请求
- 获取所需页面的json数据
- 找出json数据中的id
- 发送请求
- 获取详细信息
代码
import json
import requests
if __name__ == "__main__":
url = 'http://scxk.nmpa.gov.cn: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/86.0.4240.111 Safari/537.36'
}
all_data = []
id_list = [] # 存储企业id
for page in range(1,6):
page = str(page)
data1 = {
'on': 'true',
'page': page,
'pageSize': '15',
'productName':'',
'conditionType':'1',
'applyname':'',
'applysn':''
}
get_json = requests.post(url=url,headers=headers,data=data1).json()
for dic in get_json['list']:
id_list.append(dic['ID'])
#print(id_list)
#获取企业详情数据
post_url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById'
for id in id_list:
data2 = {
'id':id
}
detail_json = requests.post(url=post_url,headers=headers,data=data2).json()
all_data.append(detail_json)
fp = open('./allData.json','w',encoding='utf-8')
json.dump(all_data,fp=fp,ensure_ascii=False)
print("endiing")
# with open('./huazhuangpin.html','w',encoding='utf-8') as fp:
# fp.write(page_text)