import requests
import json
if __name__ == "__main__":
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
id_list = [] # 存储企业的id
all_data_list = [] # 存储所有的企业详情数据
#批量获取不同企业的id值
#url直接请求到的响应数据不包含企业详情数据 那么很有可能是动态加载出来的(ajax)
url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList'
#参数的封装
for page in range(1,6):
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'])
#获取企业详情数据
#通过对详情页url的观察发现 url的域名都是一样的 只有携带的参数不一样
#id地址可以从首页对应的ajax请求到的json串中获取
#域名和id值拼接可完整得到详情页的url(前提:通过url可获得详情页数据->通过抓包工具response去搜索相关词
post_url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById'
for id in id_list:
data = {
'id':id #参数处理基于上一步得到的id数组
}
detail_json = requests.post(url=post_url,headers=headers,data=data).json()
# print(detail_json,'-------------ending-----------')
all_data_list.append(detail_json)
#持久化存储all_data_list
fp = open('./allData.json','w',encoding='utf-8')
json.dump(all_data_list,fp=fp,ensure_ascii=False)
print('over!!!')
requests实战之药监总局相关数据爬取(路飞学城
于 2023-10-12 09:24:57 首次发布