「ウェブ・スクレイピング」の版間の差分
Administrator (トーク | 投稿記録) |
|||
| (3人の利用者による、間の3版が非表示) | |||
| 1行目: | 1行目: | ||
'''ウェブ・スクレイピング'''([[英語]]:web scraping)とは、[[ウェブ]]上の[[HTML]]などから機械的に[[データ]] | '''ウェブ・スクレイピング'''([[英語]]:web scraping)とは、[[ウェブ]]上の[[HTML]]などから機械的に[[データ]]を抜き出すことを言う。単に「スクレイピング」と呼ばれることも多い。 | ||
==概要== | ==概要== | ||
| 16行目: | 16行目: | ||
[[プログラミング言語]]でやる場合にもっとも手軽なのは[[正規表現]]でぶっこ抜くという手法である。 | [[プログラミング言語]]でやる場合にもっとも手軽なのは[[正規表現]]でぶっこ抜くという手法である。 | ||
これは極端に言えば古くから[[UNIX]]の[[sedコマンド]]などで行われていたデータ加工となんら変わらない。 | これは極端に言えば古くから[[UNIX]]の[[sedコマンド]]などで行われていたデータ加工となんら変わらない。 | ||
もう少し複雑なものでは専用のHTMLパーサー([[HTML]]を解析できるライブラリ)を使用してぶっこ抜くという手法が用いられる。 | |||
これらは内部的には上記の正規表現を用いたものから、[[XML]]に変換して解析を行うもの、独自の解析を行うものなど様々である。 | |||
さらに既存の[[ウェブブラウザ]]のエンジンである[[Gecko]]や[[WebKit]]などを用いて[[JavaScript]]の挙動まで再現してぶっこ抜くという手法もある。 | |||
たとえば[[.NET Framework]]で[[GeckoFX]]を用いれば「DOMのreadyイベントを待ってから解析を開始する」などといったことができる。 | |||
==主なライブラリ== | ==主なライブラリ== | ||
| 25行目: | 31行目: | ||
===Ruby=== | ===Ruby=== | ||
*[[Nokogiri]] | *[[Nokogiri]] | ||
===.NET=== | ===.NET=== | ||
*[[AngleSharp]] | |||
*: 最近の流行りらしい。 | |||
*[[Html Agility Pack]] | *[[Html Agility Pack]] | ||
*:かなり精度は高い。手軽。並列処理にも強い。 | *:かなり精度は高い。手軽。並列処理にも強い。 | ||
*[[GeckoFX]] | *[[GeckoFX]] | ||
*:[[Firefox]] | *:[[Firefox]]そのものを利用する。[[iOS]]や[[Android]]のアプリ開発で頻出する[[WebView]]に類似するもので、[[HTML5]]かつほぼ[[JavaScript]]だけで描画を行っているページですら完璧にぶっこ抜くことが出来てしまう。 | ||
=== その他 === | |||
* [[Selenium]] | |||
*: あらゆる[[言語]]に[[移植]]されているぞ。速度と[[メモリリーク]]させ無視できるなら無敵だ。 | |||
==関連項目== | ==関連項目== | ||