際際滷

際際滷Share a Scribd company logo
スクレイピングのススメ
L紅寒 崘錬
徭失B初
? L紅寒崘錬
? デジタルサ`カス幄塀氏芙 険砠LCTO
? iOSアプリ/Web_k
? その麿箸龍: カ`ト, 徨垢恬´
@tomzoh facebook.com/
hasegawa.tomoki
デジタルサ`カス幄
? Webサイト_kPHP, CakePHP, Drupal
? スマホアプリ_kiOS / Android)
T勅鹿嶄 ? WE WANT YOU
書晩のテ`マ
? スクレイピング (scraping)
? HTMLからデ`タをiき竃す
? 碧エンジン、OGP (Open Graph Protocol)、
Twitter Cards、まとめサイト ´
scrape
‐徭咫
1. _耕い麗にヽこする、すれる
2. _こすってヽキ`キ`と咄を羨てる
3. _繁がヽsして頂らす
4. 仭うじてやり宥す朿匹桂譴欧襭
‐麿咫
1. _゛の燕中をヽゴシゴシこする#゛をきれいにするために佩うもの。
2. _燕中のヽ゛をこすり鯛とす枷,襭檗耕い麗をゴシゴシとこすり
原けて。
3. _耕い麗にこすってヽ゛を価りむくつける
4. _耕い麗にヽ゛をこすり原ける曚海垢辰謄`キ`と咄を羨てる
5. _逗困靴董魁をかき鹿める曚き篠せる
6. ゞコ〃_デ`タなどをヽ函誼Ъ櫃垢襦蒙にeのプログラムの
竃薦から、云栖とはなる喘余?侘塀などでデ`タを渇竃すること。
竃婢: SPACE ALC http://www.alc.co.jp
旋喘箭
これを´ こうする
array(	
(int) 0 => array(	
'is-fba' => false,	
'shipping' => (int) 257,	
'price' => (int) 2001,	
'condition' => '嶄',	
'subcondition' => '辛',	
'seller' => array(	
'name' => 'lambdas',	
'merchant-id' =>
'A3VELMD24S0ERO'	
),	
),
HTML
スクレイピングの児云圭
? 猟忖双としてI尖する
? HTML猟忖双から屎ア蹶Fで猟忖双としてデ`タ
を函り竃す
猟忖双I尖
XMLI尖
? XMLとしてI尖する
? HTML猟忖双をXMLとしてパ`スしてDOMツ
リ`としてデ`タを函り竃す
どちらの圭がベスト
猟忖双I尖
? ちょっとした秤鵑鯣ゝ辰垢襪覆蕕返X。
? 猟忖双I尖だけで頼阻。PHPの誼吭I囃。
? }jな夛の秤鵑鯣ゝ辰垢襪覆XMLが宴旋。
? 猟忖双I尖ではしんどいHTMLidやclassが原い
ていないとか´。でも函誼辛嬬。
XMLI尖
どちらがベストかはケ`スバイケ`ス
児云圭
? 猟忖双としてI尖する
? HTML猟忖双から屎ア蹶Fで猟忖双としてデ`タ
を函り竃す
猟忖双I尖
XMLI尖
? XMLとしてI尖する
? HTML猟忖双をXMLとしてパ`スしてDOMツ
リ`としてデ`タを函り竃す
書晩はこっちのお
g廾箭
返
1. HTMLを函誼する
2. HTMLを屁侘する
3. HTMLをパ`スする
4. 秤鵑鯣,螻す
1. HTMLを函誼する
? 猟忖双としてHTMLを函誼する。
? ?le_get_contents(`http://´'); で措い。
? CookieやUserAgentO協をしたい栽は curl
を聞おう。
1. HTMLを函誼する
// HTMLを函誼
$contents = ?le_get_contents('http://www.amazon.co.jp/gp/
o?er-listing/4873111870');
2. HTMLを屁侘する
? 弊の嶄のHTMLは吭翌と屎しくない。
? ]じタグがoい、タグが秘れ徨になっている、XML蒙
歩猟忖のエスケ`プがされていない´
? そのままXMLとしてパ`スすることができない
? Tidy┘織ぅ妊で屁侘する。
? PHPでは淵汽櫞`ト。
2.HTMLを屁侘する
// Tidy Option
$con?g = array();
// Tidyオブジェクト恬撹
$tidy = tidy_parse_string($contents, $con?g, 'shiftjis');
// 屁侘g佩
$tidy->cleanRepair();
// 屁侘gHTMLを函誼
$contents = (string)$tidy;
3. HTMLをパ`スする
? HTMLをXMLとしてパ`スする。
? 圭隈はいろいろ。
? PHP ´ simplexml_load_?le()
? HTMLScraping ´ 猟忖コ`ドの峺協が竃栖たりして宴旋。
? Diggin_Scraper などなどその麿たくさんのxk岔
? 噫: TidyオブジェクトのままでもNodeを恠砲垢譴丱禰`タの函
誼は辛嬬。
書晩はこれ。
3.HTMLをパ`スする
// スクレイピングオブジェクト兜豚晒
$s = new HTMLScraping('/tmp');
// XMLパ`スする
$data = array(
'body' => $contents,
'headers' => array('content-type' => 'text/html; charset=Shift_JIS',),
'code' => 200,
);
try {
$xml = $s->getXmlObjectFromContents($data);
} catch (Exception $e){
// エラ`I尖
}
4. 秤鵑鯣,螻す
? simplexml_load_?le()やHTMLScrapingはPHP
のSimpleXMLオブジェクトを卦す。
? SimpleXMLのメソッドを聞って秤鵑鯣,螻
す。
? xpathが宴旋。
4.秤鵑鯣,螻す
// Xpathを聞って塘双を函誼
$items = $xml->xpath('//div[@class="a-row a-spacing-mini olpO?er"]');
// 塘双をル`プしてI尖する
$items = array();
foreach ($items as $item){
$price_xml = $item->xpath('//span[contains(@class, olpO?erPrice")]');
$price = intval(str_replace(',', '', $price_xml[0]));
$condition_xml = $item->xpath('//h3[contains(@class, "olpCondition")]');
$condition = trim((string)$condition_xml[0]);
:
$items[] = array( price => $price, condition => $condition, ´);
}
まとめ
? スクレイピング、yしくはない。
? トライ & エラ`議なところはある。
? Webシステムが竃栖ることがすごくレがる。
? 室g議xk岔として隔っておいても措い。
? ただしHTML筝に樋いのでxkは風嶷に。
廣吭泣
? 駅ずしもTidyをかけるのが措いとは泙蕕覆
? HTMLにして念I尖するのも措い
? <head>゛</head>坪をあらかじめ茅してからTidy /
パ`スするとか´
? 鵑離汽ぅ箸寮喘シsに廣吭。
? 鵑離汽ぅ箸殆塞をかけないに。歌深: 鍋^並周
ところで ´
? 云晩ごB初したHTMLScraping、竃婢を幣そう
と方定ぶりに碧、_いてみたら´
スクレイヒ?ンク?のススメ
WANTED
? oくなっていました。orz
? lかSJISでも聞えるパ`サ岑ってたら縮えてく
ださい。
KeyNote テンプレ`ト:
仝寄悶いい湖じになるKeynoteテンプレ`ト仝Azusa々恬った々http://memo.sanographix.net/post/82160791768
ありがとうございました
@tomzoh facebook.com/hasegawa.tomoki

More Related Content

スクレイヒ?ンク?のススメ