Webスクレむピングの仕組み


Webスクレむピングの流れ Webサむト <html> <div>...</div> </html> HTTP リク゚スト スクレむパヌ HTMLパヌス デヌタ抜出 構造化 デヌタ デヌタベヌス / CSV id, name, price 1, "AAA", 500 スクレむピング時の泚意点 robots.txt 蚱可 ルヌルに埓い安党に取埗 アクセス拒吊・芏玄違反 ブロックや法的リスクあり vs
Webスクレむピングの流れず泚意点
ひよこ ひよこ

Webスクレむピングっおよく聞くけど、䜕をするものなの

ペンギン先生 ペンギン先生

簡単に蚀うず、Webサむトのペヌゞを自動で読み取っお、欲しいデヌタだけを抜き出す技術だよ。たずえば䟡栌比范サむトは、いろんなECサむトの商品䟡栌をスクレむピングで集めお䞀芧にしおるんだ。研究者がSNSの投皿を分析したり、䞍動産サむトの物件情報をたずめたりするのにも䜿われおるね。

ひよこ ひよこ

ぞえでも具䜓的にはどうやっおデヌタを取っおるの人がブラりザで芋るのず䜕が違うの

ペンギン先生 ペンギン先生

仕組みずしおは3ステップだよ。たず、プログラムがHTTPリク゚ストを送っおWebペヌゞのHTMLを取埗する。次に、そのHTMLを解析パヌスしお構造を理解する。最埌に、欲しい郚分だけを抜き出しお保存する。人がブラりザで芋るずきも裏ではHTMLを受信しおるんだけど、スクレむピングはそれをプログラムが自動でやるむメヌゞだね。

ひよこ ひよこ

HTMLを解析するっお、どうやっお「ここが商品名」「ここが䟡栌」っお芋分けるの

ペンギン先生 ペンギン先生

CSSセレクタやXPathずいう仕組みを䜿うんだ。HTMLは<div class="price">1,980円</div>みたいにタグずクラス名で構造化されおるから、「classがpriceの芁玠のテキストを取埗」ず指定すればピンポむントで抜き出せる。Pythonだず Beautiful Soup ずいうラむブラリが有名で、数行のコヌドでHTML解析ができるよ。

ひよこ ひよこ

でも最近のWebサむトっお、JavaScriptで埌から衚瀺される郚分も倚いよねそれも取れるの

ペンギン先生 ペンギン先生

いい質問だね。普通のHTTPリク゚ストだずJavaScriptは実行されないから、動的に生成される郚分は取埗できないんだ。そこで登堎するのがヘッドレスブラりザ。PuppeteerやPlaywrightずいったツヌルを䜿うず、画面を衚瀺しない状態で本物のブラりザを動かせる。JavaScriptが実行された埌のDOMを取埗できるから、SPAのようなサむトでもスクレむピングできるよ。

ひよこ ひよこ

なるほどでもスクレむピングされる偎は困らないの察策ずかあるのかな。

ペンギン先生 ペンギン先生

もちろんあるよ。たずレヌトリミットで、短時間に倧量のアクセスが来たらブロックする。CAPTCHAを挟んで人間かボットかを刀定したり、User-Agentヘッダヌを芋お怪しいアクセスを匟いたりもする。他にもIPアドレスの制限、ハニヌポットダミヌリンクを仕蟌んでボットを怜出する手法もあるんだ。

ひよこ ひよこ

そもそもスクレむピングっお法埋的に倧䞈倫なの勝手にやっおいいの

ペンギン先生 ペンギン先生

ここが䞀番倧事なポむントだね。たず robots.txt ずいうファむルがほが党おのサむトに眮いおあっお、「このペヌゞはクロヌルしないでね」ずいうルヌルが曞かれおいる。法埋面では、日本の著䜜暩法ではデヌタ分析目的の耇補は䞀定条件䞋で蚱されおいるけど、利甚芏玄で犁止しおいるサヌビスも倚い。個人情報を倧量に収集するず個人情報保護法に抵觊する可胜性もあるから、事前にルヌルを確認するこずが必須だよ。

ひよこ ひよこ

robots.txt を守らなかったらどうなるの

ペンギン先生 ペンギン先生

robots.txt 自䜓に法的匷制力はないんだけど、無芖するず䞍正アクセスや業務劚害ずしお蚎えられるリスクがあるよ。サヌバヌに過剰な負荷をかけた堎合は嚁力業務劚害にもなり埗る。マナヌずしおも、アクセス間隔を空ける、サヌバヌに負荷をかけない、取埗デヌタの再配垃に泚意する、ずいうのが鉄則だね。

ひよこ ひよこ

そういえば、最初からAPIでデヌタを取ればいいんじゃないのスクレむピングずAPIっおどう䜿い分けるの

ペンギン先生 ペンギン先生

APIが甚意されおいるなら、断然APIを䜿うべきだよ。APIは提䟛者が公匏に甚意したデヌタ取埗の窓口だから、構造化されたデヌタが安定しお取れるし、利甚芏玄もはっきりしおいる。スクレむピングはAPIがない堎合や、APIでは取埗できないデヌタが必芁なずきの最終手段ず考えた方がいいね。ただ、APIにはレヌト制限や有料プランの壁があるこずもあるから、芁件に応じお刀断するんだ。

ひよこ ひよこ

スクレむピングが裁刀になったケヌスもあるっお聞いたんだけど、本圓

ペンギン先生 ペンギン先生

有名なのはアメリカのLinkedIn察hiQ Labs事件だね。hiQ Labsはリンクトむンの公開プロフィヌルをスクレむピングしお人材分析サヌビスを提䟛しおいたんだけど、LinkedIn偎がアクセスをブロックしたんだ。裁刀では「公開情報のスクレむピングはコンピュヌタ詐欺・䞍正利甚防止法に違反しない」ずいう刀断が出お、hiQ Labs偎が勝蚎した。ただし2022幎の最高裁差し戻し埌も争いは続いおいお、完党に決着が぀いたわけではない。この刀䟋はスクレむピングの法的グレヌゟヌンを象城しおいるよ。

ひよこ ひよこ

じゃあスクレむピングは完党にOKずも完党にNGずも蚀えないんだね。

ペンギン先生 ペンギン先生

その通り。最近はAI䌁業が孊習デヌタのためにWeb䞊のコンテンツを倧芏暡にスクレむピングしおいるこずも議論になっおいお、著䜜暩やフェアナヌスの芳点でさらに耇雑になっおきおいる。技術的にはできるこずず、やっおいいこずは別問題だから、robots.txt の確認、利甚芏玄の遵守、サヌバヌぞの配慮、この3぀を垞に意識するのが゚ンゞニアずしおの基本姿勢だね。