【问题标题】:HTML snapshots using the selenium webdriver?使用 selenium webdriver 的 HTML 快照?
【发布时间】:2016-09-29 14:33:09
【问题描述】:

我正在尝试将页面的所有可见内容捕获为文本。以that 为例。

如果我存储页面源代码,则不会捕获 cmets 部分,因为它是使用 javascript 加载的。

有没有办法使用 selenium webdriver 拍摄 HTML 快照? (最好使用python包装器表示)

【问题讨论】:

    标签: python selenium-webdriver web-crawler


    【解决方案1】:

    无论页面的 HTML 是否使用 JavaScript 生成,您仍然可以使用 driver.page_source 捕获它。

    我想您无法在示例中捕获 cmets 部分的来源的原因是因为它包含在 iframe 中 - 为了捕获框架/iframe 中内容的 html 源,您需要首先将焦点切换到该特定帧,然后调用driver.page_source

    【讨论】:

      【解决方案2】:

      此代码将截取整个页面:

      from selenium import webdriver
      
      driver = webdriver.Firefox()
      driver.get('https://dukescript.com/best/practices/2015/11/23/dynamic-templates.html')
      driver.save_screenshot('screenshot.png')
      driver.quit()
      

      但是,如果您只想要特定元素的屏幕截图,则可以使用:

      def get_element_screenshot(element: WebElement) -> bytes:
          driver = element._parent
          ActionChains(driver).move_to_element(element).perform()  # focus
          src_base64 = driver.get_screenshot_as_base64()
          scr_png = b64decode(src_base64)
          scr_img = Image(blob=scr_png)
      
          x = element.location["x"]
          y = element.location["y"]
          w = element.size["width"]
          h = element.size["height"]
          scr_img.crop(
              left=math.floor(x),
              top=math.floor(y),
              width=math.ceil(w),
              height=math.ceil(h))
          return scr_img.make_blob()
      

      其中 WebElement 是您正在追逐的元素。当然,这种方法需要你导入from base64 import b64decodefrom wand.image import Image来处理裁剪。

      【讨论】:

      • 也许我的问题不清楚,但我需要捕获 HTML,而不是图像
      • @LetsPlayYahtzee - 快照的字典定义是“快速拍摄的非正式照片,通常使用小型手持相机。” , 请修改您的问题以反映您需要捕获 HTML 而不是图像。
      • @Anil_M “字典”定义也将其描述为足球中的技术射门。所以我们不要坚持字典定义,因为它们可能无法捕捉到该术语在另一个上下文中的使用。 HTML 快照是一个非常准确的术语,我正在使用它,但我没有遇到它。以here 为例
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 2012-09-14
      • 1970-01-01
      • 2015-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多