基于如下5点展开requests模块的学习
1 什么是requests模块
requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求。功能强大,用法简洁高效。在爬虫领域中占据着半壁江山的地位。
2 为什么要使用requests模块
因为在使用urllib模块的时候,会有诸多不便之处,总结如下:
- 手动处理url编码
- 手动处理post请求参数
- 处理cookie和代理操作繁琐
3 使用requests模块:
- 自动处理url编码
- 自动处理post请求参数
- 简化cookie和代理操作
4 如何使用requests模块
安装:pip install requests
使用流程
- 指定url
- 基于requests模块发起请求
- 获取响应对象中的数据值
- 持久化存储
5 练习综合案例-取爬取国家药品监督管理总局中基于中华人民共和国化妆品生产许可证相关数据
# 2020-10-25
import requests
import json
if __name__=="__main__":
# 指定url
url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList'
# ua伪装
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'
}
ID_list = [] # 存储企业ID
ID_AllList = [] # 存储所有企业的详细信息
# 参数的封装
for page in range(1,3):
page = str(page)
data = {
'on': 'true',
'page': page,
'pageSize': '15',
'productName':'',
'conditionType':'1',
'applyname':'',
'applysn':'' ,
}
# 发送请求
response = requests.post(url=url,headers=headers,data=data)
# 获取数据
page_idlist= response.json() #字典类型
# print(page_idlist)
for dic in page_idlist['list']:
ID_list.append(dic['ID'])
print(page)
print(ID_list)
# 通过id 获取企业详情数据
post_url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById'
for id in ID_list:
post_data = {
'id': id
}
response = requests.post(url=post_url,headers=headers,data=post_data)
all_ms =response.json()
#print(all_ms)
ID_AllList.append(all_ms)
with open('./06_all_list.json','w',encoding='utf-8') as fp:
json.dump(ID_AllList,fp=fp,ensure_ascii=False)
print('爬取完成!')