g1879 / DrissionPage

Python based web automation tool. Powerful and elegant.
https://DrissionPage.cn/
BSD 3-Clause "New" or "Revised" License
8.23k stars 779 forks source link

跳转新标签 无法监听网络数据 #379

Open aigc4o opened 2 months ago

aigc4o commented 2 months ago

问题描述

在默认标签页内,点击跳转到新标签页,无法抓取跳转后的网络数据。

代码示例

# 初始化
co = ChromiumOptions().set_local_port(9233)
page = ChromiumPage(co)
page.set.auto_handle_alert()
# 访问网站
page.get('https://www.cnki.net/')
page.wait.load_start()
# 搜索人工智能
page.ele('@class=search-input').input('人工智能\n')
# 点击html阅读时,会自动跳转新标签
page.listen.start('kns.cnki.net/nzkhtml/xmlRead/trialRead')
page.ele('@title=HTML阅读').click()
res = page.listen.wait() #因为监听不到,导致程序挂起

尝试解决

尝试使用click.for_new_tab()方法来获取新增标签页

# 打开第一个论文的html阅读页
tab = page.ele('@title=HTML阅读').click.for_new_tab()
tab.listen.start('kns.cnki.net/nzkhtml/xmlRead/trialRead')
res = tab.listen.wait()

但是依然无法抓取到下图标示的任何数据(监听目标设置正确) image

补充

我目前已经打算转向DrissionPage进行爬虫工作,之前使用selenium+requests的方法实在捉襟见肘。所以非常希望开发者能够解决这一问题,感谢你的付出!

RanZiXuan commented 1 month ago

+1 想问问这个问题的解决方案

bigbigbos commented 2 weeks ago

加一,想问问有这个问题的解决方案吗

redochen commented 1 week ago

+1。今天也遇到了这个问题,我是先执行bat脚本启动chrome,再用DP接管浏览器,这种方式似乎无法监听到新开tab的数据包。之前一直是用DP自动启动浏览器,是没有问题的。