简单的网络请求,获取文件的标识(announcementId),将要爬取的全部文件的id保存在数组中,因为在获取pdf网址时(announcementId)为发送post请求的唯一标识。
if __name__ == '__main__':
#通过ajex请求,获取请求数据的接口
url = 'http://www.cninfo.com.cn/new/hisAnnouncement/query'
#决定爬取的页数
for pageNum in range(1,3):
param = {
'pageNum': pageNum,
'pageSize': '30',
'column': 'szse',
'tabName': 'fulltext',
'plate': '',
'stock': '',
'searchkey': '',
'secid': '',
'category': '',
'trade': '',
'seDate': '2021-12-07~2022-06-07',
'sortName': '',
'sortType': '',
'isHLtitle': 'true',
}
#进行ua伪装
head={
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
}
#保存每个公司的标识
id_list = []
response=requests.post(url=url,headers=head,data=param)
data_list=response.json()
print(data_list)
for dic in data_list['announcements']:
id_list.append(dic['announcementId'])
print(id_list)
响应方式和请求的网址
响应得到的数据
开始根据(announcementId)获取pdf文件的网址。
#获取详情数据,详细数据的请求接口
post_url='http://www.cninfo.com.cn/new/announcement/bulletin_detail'
for announcementId in id_list:
hea = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
}
#获取当天时间
t = time.localtime()
print(time.strftime("%Y-%m-%d", t))
# 拼接接口需要的标识信息
data = {
'announceId': announcementId,
'flag':'true',
'announceTime':'time.strftime("%Y-%m-%d", t)',
}
last_list=requests.post(url=post_url,headers=hea,params=data).json()
#打印获取的网址和文件标题
print(last_list['fileUrl'])
print(last_list['announcement']['announcementTitle'])
根据请求url和params得知需要的标识
响应获取的json数据
根据得到的网址将pdf文件保存到save文件夹中并命名
responsepdf = requests.get(last_list['fileUrl'])
if responsepdf.status_code == 200:
with open(r".\save\%s.pdf" % last_list['announcement']['announcementTitle'], "wb") as code:
code.write(responsepdf.content)
代码直接粘贴即可运行,有问题可以留言,看到会回复,