我查阅了Selenium Python文档,它允许我们对元素进行截图。我尝试了以下代码,并且对于小型页面(当您打印它们时大约3-4个实际的A4页面)它是有效的:
当我使用
我已经尝试使用隐式和显式等待(设置为10秒,这对于浏览器加载所有内容、评论和讨论部分已足够),但这并没有改进截图功能。只是为了确保selenium确实正常加载了网页,我尝试了不带
看起来
from selenium.webdriver import FirefoxOptions
firefox_profile = webdriver.FirefoxProfile()
firefox_profile.set_preference("browser.privatebrowsing.autostart", True)
# Configure options for Firefox webdriver
options = FirefoxOptions()
options.add_argument('--headless')
# Initialise Firefox webdriver
driver = webdriver.Firefox(firefox_profile=firefox_profile, options=options)
driver.maximize_window()
driver.get(url)
driver.find_element_by_tag_name("body").screenshot("career.png")
driver.close()
当我使用
url="https://waitbutwhy.com/2020/03/my-morning.html"
进行尝试时,它按预期给出了整个页面的截图。但是当我尝试使用url="https://waitbutwhy.com/2018/04/picking-career.html"
时,页面的近一半在截图中没有被呈现出来(图片太大无法上传),即使原始HTML中的"body"标签确实延伸到底部。我已经尝试使用隐式和显式等待(设置为10秒,这对于浏览器加载所有内容、评论和讨论部分已足够),但这并没有改进截图功能。只是为了确保selenium确实正常加载了网页,我尝试了不带
headless
标志的加载,一旦网页完全加载,我就运行了driver.find_element_by_tag_name("body").screenshot("career.png")
。截图再次是部分空白的。看起来
screenshot
方法可能有一些内存限制(虽然我找不到任何限制),或者screenshot
方法本身的逻辑有缺陷。虽然我不能确定。我只想简单地截取整个"body"元素的屏幕截图(最好在headless
环境下)。