[PHP]simplehtmldomを利用して対象URLの対象クラスに所属するimg urlを取得する

simplehtmldomを利用して対象URLの対象クラスに所属するimg urlを取得するには以下のコードで実現可能。

URLとクラスを入力してSUBMITボタンを押すと、対象URLから画像リストを引っ張ってこれる

*simplehtmldomは別途インストールしておくこと

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>画像URL抽出フォーム</title>
</head>
<body>
    <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="POST">
        <label for="url">URL:</label>
        <input type="text" id="url" name="url" required>
        <br>
        <label for="class">Class:</label>
        <input type="text" id="class" name="class" required>
        <br>
        <button type="submit">送信</button>
    </form>

    <?php

    // 必要なライブラリを読み込む
    require_once './simplehtmldom/simple_html_dom.php';

    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['url']) && isset($_POST['class'])) {
        $url = $_POST['url'];
        $class = $_POST['class'];

        // Get HTML content from the URL
        $html = file_get_html($url);

        // Display the retrieved HTML content for debugging
        echo '<h2>取得したHTML:</h2>';
        echo '<pre>' . htmlspecialchars($html) . '</pre>'; // Display the raw HTML content

        $imageUrls = [];

        foreach($html->find('.'.$class.' img') as $element) {
            // Check if the img tag has src attribute
            if ($element->src && filter_var($element->src, FILTER_VALIDATE_URL) !== false) {
                $imageUrls[] = $element->src;
            }

            // Check if the img tag has data-src attribute
            if ($element->getAttribute('data-src') && filter_var($element->getAttribute('data-src'), FILTER_VALIDATE_URL) !== false) {
                $imageUrls[] = $element->getAttribute('data-src');
            }
        }

        // Display the results in a simple HTML list
        echo '<h2>抽出された画像URL:</h2>';
        if (!empty($imageUrls)) {
            echo '<ul>';
            foreach ($imageUrls as $imageUrl) {
                echo '<li><a href="' . $imageUrl . '" target="_blank">' . $imageUrl . '</a></li>';
            }
            echo '</ul>';
        } else {
            echo '<p>画像URLが見つかりませんでした。</p>';
        }
    } else {
        if ($_SERVER['REQUEST_METHOD'] === 'POST') {
            http_response_code(400);
            echo "無効なリクエスト";
        }
    }
    ?>
</body>
</html>

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です