今天利用requests模块爬取了药品监督总局的生产许可证信息。通过对生产许可证详情页的观察可以发现,url全是一样的,只有对应参数id不同,所以第一步就要获取到所有公司对应的id值,然后再将id值与url进行拼接即可获取企业详情数据,具体操作参照以下代码。
import requests
import json
if __name__ == "__main__":
#获取企业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/81.0.4044.138 Safari/537.36'
}
id_list = [] # 用来存储获取到的id值
all_detail_list = [] # 用来存储所有的企业详情数据
for page in range(1,3):#遍历所有页中的公司
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'])
#print(id_list)
#接下来获取企业详情页
post_url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById'
for id in id_list:
data = {
'id':id
}
detail_list = requests.post(url=post_url,data=data,headers=headers).json()
all_detail_list.append(detail_list)
#永久化存储
fp = open('./yaojianju.json','w',encoding='utf-8')
json.dump(all_detail_list,fp=fp,ensure_ascii=False)
print('over!!')
运行结果如下:
在做的时候有几个小的技巧,比如说将快速加引号和整段代码缩进。
1.快速加引号
在PyCharm 编辑器中按住Ctrl+R ,分别在第一行第二行输入1. (.*?):(.*) 2. '$1':'$2',
然后将一下框打上对勾,如下图。
2. 整段代码缩进
Pycharm中为选中需缩进的代码,然后按Tab即可,取消为Tab+shift
如果是python自带编辑器缩进为Ctrl+[ ,取消为Ctrl+]
以上即为本文内容