首页 > 解决方案 > 在 pyppeteer 中获取新标签页的 URL

问题描述

我正在努力弄清楚如何:

  1. 检测何时在 chrome 中打开新选项卡(例如通过单击页面上的某些内容)
  2. 获取新打开的选项卡的 url。

我已将 pyppeteer 连接到我当前的 chrome 实例:

browser = await pyppeteer.connect(browserURL='http://127.0.0.1:9222')

当我手动创建标签时,获取 url 没有问题。

url = 'https://www.google.com'
page = await browser.newPage()
await page.goto(url)
current_url = await page.evaluate('window.location.href', force_expr=True)

我读过有一种方法可以在原始 puppeteer 中使用“targetcreated”执行此操作:

browser.on('targetcreated', function(){
    console.log('New Tab Created');
})

所以我问我该怎么做:

// listen for new tab
newTab = browser.on('targetcreated') // This is where I'm stuck
// get url
current_url = await newTab.evaluate('window.location.href', force_expr=True)

我希望一切都有意义!

标签: pythonpuppeteerpyppeteer

解决方案


1.检测新标签

from pyppeteer import launch

browser = await launch({"headless": False})
page = await browser.newPage()
await page.goto("http://google.com")


len(await browser.pages()) # Should be 2 because default page and created page

page2 = await browser.newPage()
await page2.goto("http://yahoo.com")
len(await browser.pages()) # Should be 3 now

要检测新标签,请检查await browser.pages() 并且您可以访问每个页面:

pages = await browser.pages()

这让我们...

2. 获取新打开的标签页的 url

for p in pages:
   print (p.url)

这些是您为特定问题找出解决方案的基石。检查你有多少页,如果有变化,用新页做点什么


推荐阅读