ここ最近というか結構前からhtmlスクレイピングすることが多いのでメモ。
最初はいろいろ試してたんだけど、今使ってるのは2パターン。
ベンチマークとって最速だったからとかじゃなく、単に慣れかも。
http://www.oreilly.co.jp/books/4873111870/download.html
始点と終点書いて直感的に取ってこれる。
でも言語に限らず使えるから便利。
このブログのタイトル取る例。
スクレイピングって地道な作業だよね。
各サイトごとにほぼ手動対応。。
最初はいろいろ試してたんだけど、今使ってるのは2パターン。
ベンチマークとって最速だったからとかじゃなく、単に慣れかも。
scrape_func.php
このオライリーの本のサンプルコードに含まれているファイル。http://www.oreilly.co.jp/books/4873111870/download.html
始点と終点書いて直感的に取ってこれる。
$_rawData = getURL($url); $_rawData = mb_convert_encoding($_rawData, "UTF-8", "auto"); $_rawData = cleanString( $_rawData ); $headline = getBlock("<div id=\"headline\">","</div>",$_rawData,false); $title = getElement("h1", $_rawData);
XPATH
xpath使うのが一般的だとは思うけど、ちっちゃい処理だと上に挙げたライブラリの方が早いんだよね。でも言語に限らず使えるから便利。
このブログのタイトル取る例。
$res = file_get_contents($url); $dom = @DOMDocument::loadHTML($res); $xml = simplexml_import_dom($dom); //最新記事のタイトル $title = $xml->xpath("//div[@class='hentry']/h2/a/text()"); echo (string) current($title); //3番目の記事のタイトル $title = $xml->xpath("//div[@class='hentry'][3]/h2/a/text()"); echo (string) current($title); //3番目の記事のリンク $link = $xml->xpath("//div[@class='hentry'][3]/h2/a/@href")
スクレイピングって地道な作業だよね。
各サイトごとにほぼ手動対応。。