PHPのDOMDocumentとDOMXPathを使ってHTMLを解析・テキスト抽出する方法
PHPではDOMDocumentクラスとDOMXPathクラスを組み合わせることで、HTML文字列を解析し、特定の条件に一致する要素からテキストを簡単に抽出できます。
例えば、「class="main"が指定された<div>タグの中にある、class="text"が指定された<div>タグ内のテキスト」を取得したい場合は、以下のようなコードで実現できます。
サンプルコード
$html = <<<HTML
<div class="main">
<div class="text">
This is text 1
</div>
</div>
<div class="main">
<div class="text">
This is text 2
</div>
</div>
HTML;
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$tags = $xpath->query('//div[@class="main"]/div[@class="text"]');
foreach ($tags as $tag) {
var_dump(trim($tag->nodeValue));
}コードの解説
- loadHTML(): HTML文字列を読み込み、DOMツリーとして内部に構築します。
- DOMXPath::query(): XPathクエリを使用して、目的の要素を検索し、該当するノードのリスト(DOMNodeList)を返します。
- XPath式「//div[@class="main"]/div[@class="text"]」は、「class属性がmainであるdiv要素の直下にある、class属性がtextであるdiv要素」をすべて取得することを意味します。
実行結果
上記のコードを実行すると、次のような出力が得られます。
string 'This is text 1' (length=14) string 'This is text 2' (length=14)
このように、DOMXPathのqueryメソッドにXPathクエリを渡すことで、ユーザーが検索したい要素のリストを柔軟に取得できます。スクレイピングやHTML解析の処理において非常に便利な手法なので、ぜひ活用してみてください。
-
HTML DOMスタイルのflexFlowプロパティの使い方を徹底解説
HTML DOMのスタイルにおけるflexFlowプロパティは、要素のflexDirection(フレックスアイテムの方向)とflexWrap(折り返しの可否)をまとめて指定するためのプロパティです。これら2つのプロパティに対するショートハンド(一括指定)として機能し、記述した順序に従って値が適用されます。flexFlowプロパティの構文flexFlowプロパティを設定する際の基本的な構文は以下の通りです。object.style.flexFlow = flex-direction flex-wrap|initial|inherit;指定できる値の一覧flexFlowプロパティに設定できる各値
-
Seleniumでテキスト入力ボックスのEnterキー操作をシミュレートする方法
Selenium WebDriverを使用すると、HTMLのテキスト入力ボックスに対するEnterキーの押下を簡単にシミュレートできます。その際に活用するのが sendKeys メソッドで、引数として Keys.ENTER を渡します。また、同じ動作は Keys.RETURN を引数に渡すことでも実現できます。Keys クラスを利用するためには、あらかじめコード内で org.openqa.selenium.Keys パッケージをインポートしておく必要があります。ここでは、入力ボックスにテキストを入力した後、ENTER/RETURNキーを送信する手順を具体的に見ていきましょう。実装例Keys.E