使用selenium在Python中删除节点屏幕快照

使用selenium在Python中删除节点屏幕快照,python,selenium,web-scraping,Python,Selenium,Web Scraping,我和我的朋友们玩纸牌游戏,想编一个自定义网站,这样我们即使不能见面也可以玩。游戏的卡片都可以通过游戏网站访问。它们存储在以下特定位置: 游戏/卡片数据库/过滤器/升级详细信息/id 该程序应该遍历所有ID,并在chrome inspector中采用相当于“Nodescreenshot”的方法 我的尝试如下: import time from selenium import webdriver from selenium.webdriver.chrome.options import Optio

我和我的朋友们玩纸牌游戏,想编一个自定义网站,这样我们即使不能见面也可以玩。游戏的卡片都可以通过游戏网站访问。它们存储在以下特定位置:

游戏/卡片数据库/过滤器/升级详细信息/id

该程序应该遍历所有ID,并在chrome inspector中采用相当于“Nodescreenshot”的方法

我的尝试如下:

import time

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from PIL import Image
from io import BytesIO

options = Options()
options.headless = True
options.add_argument("--window-size=1920,1080")

driver = webdriver.Chrome(options=options)


for i in range(2000):
    driver.get(f"https://squadbuilder.fantasyflightgames.com/card-database/filters/upgrade-details/{i}")
    time.sleep(5)
    card_div = driver.find_element_by_class("sc-fzpans sc-fzplWN sc-fzoLag sc-pjSSY joSaYB")
    location = card_div.location
    size = card_div.size
    png = driver.get_screenshot_as_png()  # saves screenshot of entire page

    im = Image.open(BytesIO(png))  # uses PIL library to open image in memory

    left = location['x']
    top = location['y']
    right = location['x'] + size['width']
    bottom = location['y'] + size['height']

    im = im.crop((left, top, right, bottom))  # defines crop points
    im.save(f'Card{i}.png')  # saves new cropped image
driver.close()
但是代码总是会遇到错误,无法找到div

感谢您的帮助


提前感谢:)

这主要是由于在某些网站上使用headless。我建议添加用户代理并打印出driver.page\u源代码。此外,按类名查找也会使用一个单数值,而不是使用css选择器。你也会遇到无头截屏的问题。谢谢Arundeep Chohan,程序运行没有问题,你真的让我开心!