Spaces:
Paused
Paused
Update app.py
Browse files
app.py
CHANGED
|
@@ -28,10 +28,8 @@ def scroll_to_bottom(driver):
|
|
| 28 |
一旦ページの最下部までスクロールし、
|
| 29 |
Lazy Loadなどで追加要素が生成されるのを待つ
|
| 30 |
"""
|
| 31 |
-
# 現在の高さ
|
| 32 |
last_height = driver.execute_script("return document.body.scrollHeight")
|
| 33 |
while True:
|
| 34 |
-
# 最下部までスクロール
|
| 35 |
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
|
| 36 |
time.sleep(1) # スクロール後の描画待ち
|
| 37 |
new_height = driver.execute_script("return document.body.scrollHeight")
|
|
@@ -65,36 +63,41 @@ def render_fullpage_screenshot(html_code):
|
|
| 65 |
)
|
| 66 |
time.sleep(1)
|
| 67 |
|
| 68 |
-
#
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 76 |
time.sleep(1)
|
| 77 |
-
#
|
| 78 |
scroll_to_bottom(driver)
|
| 79 |
-
|
| 80 |
-
w2, h2 = get_full_dimensions(driver)
|
| 81 |
-
# 変化がなければ打ち切り
|
| 82 |
-
if (w1 == w2) and (h1 == h2):
|
| 83 |
-
break
|
| 84 |
|
| 85 |
-
#
|
| 86 |
driver.execute_script("""
|
| 87 |
document.documentElement.style.overflow = 'hidden';
|
| 88 |
document.body.style.overflow = 'hidden';
|
| 89 |
""")
|
| 90 |
time.sleep(1)
|
| 91 |
|
| 92 |
-
# overflow: hidden
|
| 93 |
w3, h3 = get_full_dimensions(driver)
|
| 94 |
driver.set_window_size(w3, h3)
|
| 95 |
time.sleep(1)
|
| 96 |
|
| 97 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
| 98 |
png = driver.get_screenshot_as_png()
|
| 99 |
|
| 100 |
except Exception as e:
|
|
|
|
| 28 |
一旦ページの最下部までスクロールし、
|
| 29 |
Lazy Loadなどで追加要素が生成されるのを待つ
|
| 30 |
"""
|
|
|
|
| 31 |
last_height = driver.execute_script("return document.body.scrollHeight")
|
| 32 |
while True:
|
|
|
|
| 33 |
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
|
| 34 |
time.sleep(1) # スクロール後の描画待ち
|
| 35 |
new_height = driver.execute_script("return document.body.scrollHeight")
|
|
|
|
| 63 |
)
|
| 64 |
time.sleep(1)
|
| 65 |
|
| 66 |
+
# ---- (A) 一度ページ全体のサイズを取得してウィンドウを拡張 ----
|
| 67 |
+
w1, h1 = get_full_dimensions(driver)
|
| 68 |
+
driver.set_window_size(w1, h1)
|
| 69 |
+
time.sleep(1)
|
| 70 |
+
|
| 71 |
+
# ---- (B) ページ下端までスクロールしてLazy Load等を発火させる ----
|
| 72 |
+
scroll_to_bottom(driver)
|
| 73 |
+
time.sleep(1)
|
| 74 |
+
|
| 75 |
+
# 再度サイズを取得して変化があれば再設定
|
| 76 |
+
w2, h2 = get_full_dimensions(driver)
|
| 77 |
+
if (w2 != w1) or (h2 != h1):
|
| 78 |
+
driver.set_window_size(w2, h2)
|
| 79 |
time.sleep(1)
|
| 80 |
+
# 念のためもう一度最下部へ
|
| 81 |
scroll_to_bottom(driver)
|
| 82 |
+
time.sleep(1)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 83 |
|
| 84 |
+
# ---- (C) スクロールバーを非表示にする(不要ならコメントアウト)----
|
| 85 |
driver.execute_script("""
|
| 86 |
document.documentElement.style.overflow = 'hidden';
|
| 87 |
document.body.style.overflow = 'hidden';
|
| 88 |
""")
|
| 89 |
time.sleep(1)
|
| 90 |
|
| 91 |
+
# overflow: hidden による再レイアウトでサイズが変わる可能性がある
|
| 92 |
w3, h3 = get_full_dimensions(driver)
|
| 93 |
driver.set_window_size(w3, h3)
|
| 94 |
time.sleep(1)
|
| 95 |
|
| 96 |
+
# ---- (D) ★最終的にトップへ戻す★ ----
|
| 97 |
+
driver.execute_script("window.scrollTo(0, 0);")
|
| 98 |
+
time.sleep(1)
|
| 99 |
+
|
| 100 |
+
# ---- (E) スクリーンショット取得 ----
|
| 101 |
png = driver.get_screenshot_as_png()
|
| 102 |
|
| 103 |
except Exception as e:
|