首页 > 解决方案 > 在 Python 中使用 selenium 抓取 Nodescreenshots

问题描述

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

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

该程序应该遍历所有 id 并在 chrome 检查器中获取相当于“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

任何帮助表示赞赏,

提前致谢 :)

标签: pythonseleniumweb-scraping

解决方案


推荐阅读