Я пытался сделать снимки экрана сайта с помощью chromedriver в Python.
У меня есть цикл while, который должен непрерывно делать снимки экрана, пока сайт не будет выглядеть по-другому.
Сценарий работает только в течение 2 итераций (i = 2), а затем выдает следующую ошибку в командной строке.
[1008 / 123629.610: INFO: CONSOLE (118)] "События ориентации устройства заблокированы функциейполитика. См. https://github.com/WICG/feature-policy/blob/master/features.md#sensor-features", источник: https://z.moatads.com/performgroupjsvideo844424951729/moatvideo.js (118) [1008 / 123629.611: INFO: CONSOLE (3072)] "reloadLostZones", источник: https://wfpscripts.webspectator.com/ws-dev.js (3072)
Я не уверен, как решить проблему.
Ниже приведен основной сценарий с циклом while.
from PIL import Image
import screenshot_capture as sc
from crop_test import crop
import time
i =1
sc.screenshot_capture(i,'https://www.goal.com')
time.sleep(30)
image = 'screen_shot' + str(i) +'.png'
#crop(image, (300, 396, 1183, 1383), 'cropped5.png')
crop(image, (300, 396, 500, 1383), 'cropped' + str(i) +'.png')
while True:
print(i)
i += 1
preimage = image
sc.screenshot_capture(i,'https://www.goal.com')
time.sleep(30)
image = 'screen_shot' + str(i) +'.png'
#crop(image, (300, 396, 1183, 1383), 'cropped5.png')
crop(image, (300, 396, 500, 1383), 'cropped' + str(i) +'.png')
if preimage != image:
break
Ниже приведен сценарий обрезки изображений.
from PIL import Image
def crop(image_path, coords, saved_location):
"""
@param image_path: The path to the image to edit
@param coords: A tuple of x/y coordinates (x1, y1, x2, y2)
@param saved_location: Path to save the cropped image
"""
image_obj = Image.open(image_path)
cropped_image = image_obj.crop(coords)
cropped_image.save(saved_location)
#cropped_image.show()
Ниже приведен скрипт для захвата скриншотов.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
def screenshot_capture(itnum,address):
driver = webdriver.Chrome()
driver.get(address)
#pause 3 second to let page load
time.sleep(3)
#get scroll Height
height = driver.execute_script("return Math.max( document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight )")
print(height)
#close browser
driver.close()
#Open another headless browser with height extracted above
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument(f"--window-size=1920,{height}")
chrome_options.add_argument("--hide-scrollbars")
driver = webdriver.Chrome(options=chrome_options)
driver.get(address)
#pause 3 second to let page loads
time.sleep(3)
#save screenshot
imagetitle = 'screen_shot' + str(itnum) +'.png'
driver.save_screenshot(imagetitle)
driver.close()