エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

Webスクレイピング周りの調査結果まとめ

きっかけ

webページ解析してみたくて、いろいろ調べた

調査内容まとめ

基本的に、jsoupってライブラリを使えば、webページの情報をオブジェクト化してくれる。
あとは、cssの知識と正規表現の知識があれば、データを引っ張ってこれることまでは確認できた。

問題は、動的webページの解析。

いろいろ調べたが、HtmlUnit使えばいいらしいってことまで調査できたが、自分が使ったサイトでは、無理だった。
他にも、seleniumのライブラリ使って動的サイトで最終的なwebページの情報を取ろうと思ったけど、無理だった。
ajax許可しているはずなんだけど、できてないのは、何かしらの原因があると思っているけど、それが何なのか調査しているうちに、心が折れてしまったよ。。。

javaのライブラリでは無理だったのだが、pythonとかjsのライブラリならイケるのだろうか?

あと、json形式でデータを持っているパターンがあって、それは、正規表現で抽出して、jacksonに食わせてやったんだけど、階層構造が複雑すぎて萎えた。。。
json構造を分析してjavaファイルを作成してくれるサービスが欲しいんだけど、全部1ファイルで出力するやつで、「そうじゃないんだよ!!!」って心の中で叫んでた。
結局、人力でオブジェクト作成したけど、今後もなにかありそうだから、生成するやつを作っておきたい。

まとめ

javaだと、webスクレイピングは、静的解析なら十分にやれることが分かった。
ただ、cssの知識が必須。
あとは、文字列操作とかのために、正規表現とかもいる。

動的webページの解析は、サイトによってできたりできなかったりがある気がする。
ヘッドレスブラウザが充実すれば、javaもワンチャンとは思うが、現状、進化の早いブラウザの実装に付いて行ける力のあるライブラリは、ない気がしている。

その他雑記

いろいろ調べてて思ったけど、ブラウザのサポートが、chromefirefoxのエンジン大半だった。
firefox民なのだが、調べてるとchromeの情報が大量に出てくるので、憤りを覚える。
「そのうち、独占禁止法とかに触れてしまうのでは?」って思うのだが、ブラウザ戦争は、このままchrome独り勝ち状態になってしまうん??
潮目が変わったと思うのは、firefoxのアドオン切りのあたりからだろうと思っている。
firebugsとか、お気に入りのアドオンが使えなくなって、chromeに乗り換えた人が多かったんだと思う。俺も一時期乗り換えてたけど、chromeのUIがどうしても気に入らなくてfirefoxに戻った。
chromeのUIが、ものすごく嫌いだから、firefox使い続けているんだけど、このまま行くと、chrome以外の選択肢がなくなりそうで怖い。
レンダリングエンジンも、chromeの独り勝ち状態にさせるのは、まずいと思うんだけど、どうすりゃいいんだろう?

cssの知識は、stylusで付けた。
cssの知識が薄いwebエンジニアって、結構いると思うんだけど、どうだろう?
使ってないと、すぐ陳腐化する気がする。
俺も完璧って訳じゃないけど、アクセスしたり調査するくらいの知識は付けた。
擬似クラス周りは、さっぱり分からない。