需要 URL 使用 chromedriver 和 selenium 的截图

Need screenshot from URL using chromedriver and selenium

我可以截取网站的屏幕截图,但我需要像使用截图工具一样从 URL 截取屏幕截图,但基于 screen_size , pixel 或想做一些 向上滚动和向下滚动 操作来获取其他图像。请建议我从下方获取图片的方法 URL

https://artsandculture.google.com/asset/FgEEOnrrqsn9OA

我在 AWS Lambda 中使用以下代码:

import json
#coding=utf-8                                                                                                                                                                              
import time
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
import logging
import os


class WebDriver(object):

    def __init__(self):
        self.options = Options()

        self.options.binary_location = '/opt/headless-chromium'
        #self.options.add_argument('--headless')
        self.options.add_argument('--no-sandbox')
        #self.options.add_argument('--start-maximized')
        #self.options.add_argument('--start-fullscreen')
        self.options.add_argument('--single-process')
        self.options.add_argument('--disable-dev-shm-usage')
        self.options.add_argument("--kiosk")

    def get(self):
        driver = Chrome('/opt/chromedriver', options=self.options)
        return driver


def lambda_handler(event, context):
    instance_ = WebDriver()
    driver = instance_.get()
    options = Options()
    a = os.listdir('/tmp')
    for x in a:
        print(x)
    URL = os.environ.get("URL")
    
    driver.get(URL)
    
    S = lambda X: driver.execute_script('return document.body.parentNode.scroll'+X)
    #driver.set_window_size(S('Width'),S('Height'))
    #driver.set_window_size(1280, 720)
    # May need manual adjustment                                                                                                                
    driver.find_element_by_tag_name('body').screenshot('/tmp/job_status.png')
    
    driver.quit()

我正在使用 xpath 获取 class 的特定部分。

driver.find_element_by_xpath('/html/body/div/div[1]/section[2]/div[1]/div/div[2]').screenshot('/tmp/daily_job_status.png')