[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>