見出し画像

requests-html を使ってスクリーンショットを取る方法

Selenium を使ってウェブページのスクリーンショットを取っていたが、ブラウザのインストールや設定が大変だったため、requests-html への切り替えを検討していた。

スクリーンショット取得方法

下記のコードでスクリーンショットが取得できた。

import asyncio
from requests_html import HTMLSession

def take_screenshot(url):
    # 目標のウェブページにアクセス
    session = HTMLSession()
    r = session.get(url)
    r.html.render(keep_page=True)
    # スクリーンショットを取得
    loop = asyncio.get_event_loop() 
    loop.run_until_complete(r.html.page.screenshot({'path': 'screenshot.png', 'fullPage': True}))

if __name__ == "__main__": 
    take_screenshot("https://note.com/newvillage/n/n4b745e789899")

注意事項

当然日本語フォントが含まれていない環境で実行を行うとスクリーンショットの日本語も文字化けするので実行環境の整備については考慮が必要。

追記

requests-html の利用を模索した後、Playwright を試しました。こちらの方が使いやすいので追記しておきます。

この記事が気に入ったらサポートをしてみませんか?