当前位置: 首页 > 知识库问答 >
问题:

Python selenium屏幕捕获未获取整个页面

邬英武
2023-03-14

我试图创建一个通用的网络爬虫,将去一个网站和截图。我使用的是Python、Selnium和PhantomJS。问题是截图并没有捕获页面上的所有图像。例如,如果我去you tube,它不会捕捉主页图像下面的图像。(我没有足够高的rep来发布屏幕截图)我认为这可能与动态内容有关,但我已经尝试了等待函数,如隐式等待和on set_page_load_timeout方法。因为这是一个通用的爬虫,我不能等待特定的事件(我想爬行数百个站点)。

是否有可能创建一个通用的网络爬虫,可以做我正在尝试做的屏幕捕获?我使用的代码是:

phantom = webdriver.PhantomJS()
phantom.set_page_load_timeout(30)
phantom.get(response.url)
img = phantom.get_screenshot_as_png() #64-bit encoded string
phantom.quit

共有1个答案

松霖
2023-03-14

你的建议解决了问题。使用了以下代码(部分从另一个问题的答案中窃取):

driver = webdriver.PhantomJS()    
driver.maximize_window()
driver.get('http://youtube.com')  
scheight = .1
while scheight < 9.9:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight/%s);" % scheight)
    scheight += .01        
driver.save_screenshot('screenshot.png')
 类似资料:
  • 问题内容: 如您所见,屏幕的侧面和底部都有足够的空间。我试图通过调整捕获区域的大小来纠正此问题,但这只会导致多余的区域被黑色填充 我在考虑该库可以捕获的最大分辨率有一个限制,但是我真的找不到任何这样说的文档。 下面是我的代码 有人知道如何解决此问题或知道为什么会发生吗? 问题答案: 我今天来得太早了。该脚本仅捕获像素0,0-1536,864。我最近切换到Windows 8,发现某些程序似乎以错误的

  • 我试图根据用户输入的坐标捕捉区域截图。基本上,用户在屏幕上点击得到x,y坐标,然后在其他地方点击另一对x,y坐标,然后将其放入一个矩形中,并使用机器人库创建屏幕截图。 我有的问题是,我得到了随机截图,这不是用户输入的坐标,我怎么能考虑包括0的坐标,因为矩形值必须超过1。 以下是我迄今为止的代码:

  • 我有一个有30行的tableView,我还有一个位于tableView顶部的视图(不在tableView标题中),我想捕获屏幕的完整屏幕截图,包括视图和tableView的所有行,但我只能捕获tableView和视图的可见行。请帮助我,提前谢谢。这是我的代码和模拟器的屏幕截图。注意(我不希望我的视图位于tableview标题中,因为当我们滚动tableview时,它也会滚动,这就是为什么视图是固定

  • 问题内容: 我想找出一个如何使用Java捕获截屏视频。我知道使用Robot类可以获取屏幕截图,但是如何将其捕获为视频并将其上传到服务器呢?那将如何工作? 想法? 问题答案: 使用纯Java解决方案,我怀疑它是否会起作用,但这当然取决于您对“视频”的解释。 在分辨率为1920x1200的台式机上,使用Java Robot捕获整个屏幕时,每秒可以获取约20帧。由于每个图像都包含> 6 MB的未压缩数据

  • 目前,我正在尝试使用SeleniumWebDriver捕获一个屏幕截图。但我只能获得整个页面的屏幕截图。然而,我想要的只是捕获页面的一部分,或者基于ID或任何特定元素定位器捕获特定元素。(例如,我希望用image id=“Butterfly”捕捉图片) 有没有办法按所选项目或元素捕获屏幕截图?

  • 本文向大家介绍写个方法获取屏幕的DPI相关面试题,主要包含被问及写个方法获取屏幕的DPI时的应答技巧和注意事项,需要的朋友参考一下