【问题标题】:Scrape the return of a JS onclick function抓取一个 JS onclick 函数的返回
【发布时间】:2016-06-24 13:53:12
【问题描述】:

这里提出的第一个问题。

我需要抓取一个网站的 JS onclick 函数生成的 url。所以,我认为 Selenium 可以完成这项工作,但我不知道如何在不打开其他选项卡/窗口的情况下编写代码,甚至不知道这是否可能。

这是 onclick JS 函数:

'tr class="linhares" onclick="javascript:grv(0,1,1);">

所以a基本上需要这个函数返回的url。

希望你能帮助我,谢谢!

【问题讨论】:

  • 函数 grv() 只是返回一个 URL 似乎有点奇怪。它不会在任何地方打印它、重定向浏览器或类似的东西?
  • 实际上,它会打开一个新标签页,其中包含动态生成的 url。这就像一个隐藏的目的地开放。
  • 函数 grv() 是否总是相同的,或者您是否试图解决抓取任何此类函数的一般情况?
  • 总是一样的,这真的是针对我的情况。
  • 那么,你能把grv()的代码贴出来吗?

标签: javascript python selenium onclick scrape


【解决方案1】:

请参阅下面有关切换到新窗口并切换回的示例:

driver.get("your-application-URL")
time.sleep(3)
window_before = driver.window_handles[0]
windowHandlesAllBefore = driver.window_handles
linkElements = driver.find_elements_by_css_selector("[onclick='javascript:grv(']")

for aLink in linkElements:
    aLink.click()
    time.sleep(3)
    newWindowHandle = list(set(driver.window_handles) - set(windowHandlesAllBefore))[0]
    print(newWindowHandle)
    driver.switch_to.window(newWindowHandle)
    print(driver.current_url)
    driver.close()
    driver.switch_to.window(window_before)

【讨论】:

  • 感谢分享!由于我只需要新窗口/标签的 url,有没有办法让浏览器在没有样式(没有图片,没有重元素)的情况下工作,以使其尽可能快地加载。
  • @leo04 你只需要将 webdriver 更改为 PhantomJS。见例子here
  • 再次感谢布班。我的代码的第五行有问题。 InvalidSelectorException:消息:无效选择器:指定了无效或非法的选择器
  • 再次感谢!这次我用 xpath 选择器构建了一个解决方案
  • @leo04 欢迎您。如果此答案解决了您的问题,请将其标记为正确答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
  • 2010-09-15
相关资源
最近更新 更多