htmlSQLを使ってタイトルタグ内の文字列を取得する:PHP

指定したURLのHTMLソースから目的のタグ内の文字列をSQL文で取り出すことができるライブラリを見つけました。

今までは正規表現を使って文字列を取得していましたが、このライブラリならタグはもちろん、idやclassまで検索対象にできるスグレモノで、SQLの文法と配列が理解できれば、いろいろなことに使えそうです。

このように「HTML内を部分的に取り出し、表示する」ことを「Webスクレイピング」というそうです。

使用準備

  • ライブラリをダウンロードして任意のディレクトにアップロード。
  • 利用するファイルに「snoopy.class.php」と「htmlsql.class.php」をインクルード。

使用例

<?php
include_once($_SERVER['DOCUMENT_ROOT']."/lib/snoopy.class.php");
include_once($_SERVER['DOCUMENT_ROOT']."/lib/htmlsql.class.php");
function getTitle($url){
$wsql = new htmlsql();
// connect to a URL
if (!$wsql->connect('url', $url )){
print 'Error while connecting: ' . $wsql->error;
exit;
}
// execute a query:
if (!$wsql->query('SELECT * FROM title')){
print "Query error: " . $wsql->error;
exit;
}
// show results:
foreach($wsql->fetch_array() as $row){
//print_r($row);
echo $row['text'];
}
}
getTitle("http://qwerty.work");
?>

ちなみに、print_r($row)とすると、$rowに格納されている配列の内容が確認できます。

$rowの中身→ Array ( [tagname] => title [text] => QWERTY.WORK )

例文

その他の例文はまた今度...。

制限

<div>の中の<div>など、同じタグに囲まれている文字列や要素はダイレクトに取得できず、一度大枠を取得して、再度その中から抜き出さなければならないようです。

関連記事

前へ

URLでサイトの金額的な価値がわかるサイト:webku

次へ

PHP Simple HTML DOM Parserでタイトルタグ内の文字列を取得する:PHP