要从合作方的另外一个系统上获取数据,由于对方比较傲娇,不提供 api ,我们只能通过代码去爬取。
对方系统是一个统一的登陆入口,然后有 N 个子系统,点击入口链接,会跳出一个新的窗口,打开子系统页面。
每个子系统会往 cookie 里面追加一些信息。
数据都是通过分析接口调用,使用 requests 的方式直接获取的数据。
问题是我如何通过代码的方式,获取到弹出窗口的 cookie 信息?(也就是每个子系统的 cookie 信息)
之前都是通过手动复制 cookie,然后配置每个子系统 cookie 的方式来用的。
打算这一步自动化。
但是没有什么思路。
目前能想到的就是起一个 selenium 来模拟点击,然后获取每个子系统的 cookie 。
由于公司服务器环境问题,服务器上安装 chrome 不方便。
有没有不用 selenium ,能更轻量级(最好只用 python 第三方库本身来实现,不要调用第三方浏览器)的方案?
1
ClericPy 2023-05-04 18:44:42 +08:00
chrome 不方便 Chromium 方便吧, 绿色的 zip 解压缩就能用. 说的太抽象只能给你回答地更抽象了
1. 下载一个比较新的 Chromium zip 包解压缩, 使服务器可以有浏览器 2. CDP 协议的 python 库随便一个, 拿到 TargetID 就是新弹出窗口的那个 tab id 以后直接连接上它, 然后通过域名去拿 Cookie 就行了, 'Page.getCookies' 这个看起来不是特别稳定(随时弃用), 要么截流量, 要么 Network.getCookies |
2
jy28520 2023-05-05 08:55:26 +08:00
装个 docker 然后跑 kasmweb/chrome
按照楼上说的用 CDP 去跑 |
3
moonrailgun 2023-05-05 11:56:16 +08:00
什么合作方是以爬网站作为合作的形式的。。。
|
4
piaochen0 OP @moonrailgun 甲方爸爸的系统...
|
5
Belmode 2023-05-10 16:32:49 +08:00
都这样了,就没必要继续走他们那套页面登录流程了。直接去找认证流程的接口,自己拼数据发 http 掉用,把响应的 cookie 留下来。
不然除了 selenium 还能有什么方法 |