本次爬取实现使用request模块爬取国家药品监督管理局的企业信息数据并存入到Excel表格中
爬取目标网站 http://scxk.nmpa.gov.cn:81/xk/#
分析页面:
打开网页查看首页数据,上下翻页时发现网址没有发生任何变化,可知页面数据都是通过ajax动态加载出来的,并且首页中的数据只包含了企业名称、许可证编号等信息,但不包含企业的详细信息,下图为首页页面。
此次爬取目标是所有企业的详细信息,若要得到企业的详细信息只能通过点击超链接查看,通过F12可以看出此处请求是通过企业id获取企业详细信息
爬取思路:
首先准备一个list集合用于存储所有企业的id,第一次for循环遍历每一页的企业信息,获取每个企业的id存入list集合里面。第二次for循环遍历存有各个企业id的list集合,使用每个id去请求页面获取企业详细信息并存入列表,最后使用xlwt把列表中所有企业存入到表格中
代码:
由于数据量较大,此处只爬取前20页的数据
import requests
import xlwt
import json
def main():
all_data_list = getDate() # 获取企业详情数据
savepath = ".\\国家药品监控管理局.xls" # 表格路径
saveData(all_data_list, savepath) # 写入表格
def getDate() :
url = "http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList"
headers = {
# UA伪装,模拟浏览器
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36'
}
id_list = [] # 存储企业的id
all_data_list = [] # 存储所有所有的企业详情数据
# 获取1-5页的企业id号
for page in range(1, 21):
page = str(page)
data = {
# 请求参数
'on': 'true',
'page'