如何用python获取onClick弹窗的文件

[复制链接]
查看11 | 回复10 | 2021-1-27 05:28:05 | 显示全部楼层 |阅读模式
在用python爬取网站文档的过程中遇到了问题,目标文件没有链接,而是一个onclick弹窗,点击后出来一个另存对话框,需要输入文件名,然后点击保存完成下载。这个onclick调用的一个js函数,我贴在下面,请大神帮我看一下,如何用python批量获取这种文件。
functionSaveDoc()
{
varsuffix=g_isUserView?"pdf":"doc";
varfn=IEHelper.IEH_GetNewFileName("请指定新文件名:",suffix);
if(fn!=null&&fn!="")
{
varl=IEHelper.IEH_CopyFile(g_fileName,fn);
if(l==1){
HJAlert("另存文件完成!");
if(g_isUserView){//用户查看时记录文件下载情况
varoperDesc="下载文件序号为【"+form1.hdnSeqnum.value+"】的文件";
hjoa.HJOAHelper.AjaxReportUserOperEvent(2,g_userId,operDesc,form1.hdnSeqnum.value,"","","");
}
}
else{
HJAlert("另存文件出错!");
}
}
}

分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:28:05 | 显示全部楼层
用Selenium的Alert类试试,给你一篇文档参考一下:
https://blog.csdn.net/kelanmomo/article/details/82886374?utm_medium=distribute.pc_relevant_bbs_down.none-task--2~all~first_rank_v2~rank_v25-1.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task--2~all~first_rank_v2~rank_v25-1.nonecase
send_keys(keysToSend)与accept()应该能实现你要的功能吧
回复

使用道具 举报

千问 | 2021-1-27 05:28:05 | 显示全部楼层
引用1楼Swing0_0的回复:用Selenium的Alert类试试,给你一篇文档参考一下:
https://blog.csdn.net/kelanmomo/article/details/82886374?utm_medium=distribute.pc_relevant_bbs_down.none-task--2~all~first_rank_v2~rank_v25-1.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task--2~all~first_rank_v2~rank_v25-1.nonecase
send_keys(keysToSend)与accept()应该能实现你要的功能吧
谢谢,我去学习一下
回复

使用道具 举报

千问 | 2021-1-27 05:28:05 | 显示全部楼层
引用1楼Swing0_0的回复:用Selenium的Alert类试试,给你一篇文档参考一下:
https://blog.csdn.net/kelanmomo/article/details/82886374?utm_medium=distribute.pc_relevant_bbs_down.none-task--2~all~first_rank_v2~rank_v25-1.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task--2~all~first_rank_v2~rank_v25-1.nonecase
send_keys(keysToSend)与accept()应该能实现你要的功能吧

刚测试一下,prompt.send_keys()可以,但prompt.accept()却用不了,后来直接装了pyautogui模拟按键了。现在的问题是,批量下载的话,每下一个文件都要开一个窗口,再处理弹窗,这样效率很低,不知道有没有办法不弹窗直接把页面中的文件取出来。实际测试发现,页面打开后,目标文件就已经在本地了(不知道是不是在缓存中),弹窗的另存为操作并没有连接到服务器,只是把页面中的文件存到文件夹。
回复

使用道具 举报

千问 | 2021-1-27 05:28:05 | 显示全部楼层
发下网站来看看
回复

使用道具 举报

千问 | 2021-1-27 05:28:05 | 显示全部楼层
引用4楼Swing0_0的回复:发下网站来看看在内网啊
回复

使用道具 举报

千问 | 2021-1-27 05:28:05 | 显示全部楼层



那你只能逆向一波了,看看能不能找到触发的是哪个onClick,或者看看js里有没有
回复

使用道具 举报

千问 | 2021-1-27 05:28:05 | 显示全部楼层




js里面的onClick就是调用一个函数,没有超链接,函数贴上来帮我看一下:
functionSaveDoc()
{
varsuffix=g_isUserView?"pdf":"doc";
varfn=IEHelper.IEH_GetNewFileName("请指定新文件名:",suffix);
if(fn!=null&&fn!="")
{
varl=IEHelper.IEH_CopyFile(g_fileName,fn);
if(l==1){
HJAlert("另存文件完成!");
if(g_isUserView){//用户查看时记录文件下载情况
varoperDesc="下载文件序号为【"+form1.hdnSeqnum.value+"】的文件";
hjoa.HJOAHelper.AjaxReportUserOperEvent(2,g_userId,operDesc,form1.hdnSeqnum.value,"","","");
}
}
else{
HJAlert("另存文件出错!");
}
}
}

回复

使用道具 举报

千问 | 2021-1-27 05:28:05 | 显示全部楼层
找一下g_isUserView是哪定义的
回复

使用道具 举报

千问 | 2021-1-27 05:28:05 | 显示全部楼层



js我不懂,这个页面截下来请你看一下,不知道有没有用。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行