例えば
http://www.find-job.net/startup/10-js-css-compressors
や
http://www.ibm.com/developerworks/jp/web/library/wa-objectorientedjs/index.html?ca=drs-
のサイトなどです。
その中でも、そのページのコンテンツのメインとなる記事の文章部分を取得してきたいのですが、どうすればよいのでしょうか。
※記事の文章文=フッターやサイドにある別のページへのリンクではなく、
そのWebページを読むときにメインで読むところの文章です
(1)はじめに
ウェブスクレイピングするならば…、
そのサイトの構成やページの構成を調べるところから始めます。
(2)ツール
昔はソースコードを目で追いかけたものですが、
最近はブラウザに便利な機能が備わっていて、
おおよその目安を付けやすくなっています。
たとえば、IEには「F12 開発者ツール」があります。
ツールメニューからも呼び出せますし、F12キーを押しても呼び出せます。
「開発者ツール」の検索機能(Ctrlキー+Bキー)をスタートさせて、
構造を知りたい箇所をクリックすれば、
ソースコードの該当する箇所が反転表示されます。
http://msdn.microsoft.com/ja-jp/library/ie/gg589512%28v=vs.85%29.aspx
Firefoxには「インスペクタ」があります。
調べたい箇所を右クリックして「要素を調査」とするだけで、
ソースコードが表示され、該当する箇所が反転表示されます。
https://developer.mozilla.org/ja/docs/Tools/Page_Inspector
どのようなツールを使うのが便利なのかはその人によりますので、
現在使っている環境に合わせたものからやってみると良いでしょう。
(私はFirefoxアドオンのFirebugを今も主に使っています。)
(3)構造解析
実際にツールで探した箇所を抜き出してみたのが下記です。
※本文は長くなるので省略しています。
<div class="ctL"> <div id="post-3102" class="post-3102 post type-post status-publish format-standard hentry category-1"> <div class="title"> タイトル </div> <div class="articleCt"> 本文(ソーシャルリンクも含まれる) </div> </div> </div>
<div id="ibm-content-main"> <div class="ibm-container"> 本文(ソーシャルリンクも含まれる) </div> </div>
(4)phpプログラミング
私は回線の細かった時代(Kbps)の名残で、読み取りながらパーツを分離し、
正規表現で細かく抜き出すことが多いのですが、
パソコンも高速になり、回線もMbpsが当然の現代では、
構文解析のクラスを使う方が賢いでしょう。
phpにはいくつかのクラスがありますが有名どころは次の2つです。
・HTML、XML問わずに使えるDOMDocumentクラス
http://php.net/manual/ja/class.domdocument.php
・XMLに特化したSimpleXML
http://www.php.net/manual/ja/book.simplexml.php
さて、
「1人20回まで」となっていますが、
私の仕事ではないので、そこまでのお付き合いはできません。
あとは自助努力してください。
(1)はじめに
ウェブスクレイピングするならば…、
そのサイトの構成やページの構成を調べるところから始めます。
(2)ツール
昔はソースコードを目で追いかけたものですが、
最近はブラウザに便利な機能が備わっていて、
おおよその目安を付けやすくなっています。
たとえば、IEには「F12 開発者ツール」があります。
ツールメニューからも呼び出せますし、F12キーを押しても呼び出せます。
「開発者ツール」の検索機能(Ctrlキー+Bキー)をスタートさせて、
構造を知りたい箇所をクリックすれば、
ソースコードの該当する箇所が反転表示されます。
http://msdn.microsoft.com/ja-jp/library/ie/gg589512%28v=vs.85%29.aspx
Firefoxには「インスペクタ」があります。
調べたい箇所を右クリックして「要素を調査」とするだけで、
ソースコードが表示され、該当する箇所が反転表示されます。
https://developer.mozilla.org/ja/docs/Tools/Page_Inspector
どのようなツールを使うのが便利なのかはその人によりますので、
現在使っている環境に合わせたものからやってみると良いでしょう。
(私はFirefoxアドオンのFirebugを今も主に使っています。)
(3)構造解析
実際にツールで探した箇所を抜き出してみたのが下記です。
※本文は長くなるので省略しています。
<div class="ctL"> <div id="post-3102" class="post-3102 post type-post status-publish format-standard hentry category-1"> <div class="title"> タイトル </div> <div class="articleCt"> 本文(ソーシャルリンクも含まれる) </div> </div> </div>
<div id="ibm-content-main"> <div class="ibm-container"> 本文(ソーシャルリンクも含まれる) </div> </div>
(4)phpプログラミング
私は回線の細かった時代(Kbps)の名残で、読み取りながらパーツを分離し、
正規表現で細かく抜き出すことが多いのですが、
パソコンも高速になり、回線もMbpsが当然の現代では、
構文解析のクラスを使う方が賢いでしょう。
phpにはいくつかのクラスがありますが有名どころは次の2つです。
・HTML、XML問わずに使えるDOMDocumentクラス
http://php.net/manual/ja/class.domdocument.php
・XMLに特化したSimpleXML
http://www.php.net/manual/ja/book.simplexml.php
さて、
「1人20回まで」となっていますが、
私の仕事ではないので、そこまでのお付き合いはできません。
あとは自助努力してください。
>要素の調査まではできています。
それならそうと書いておいてください。
互いに長々と無駄な時間を過ごしてしまいました。
(whitedevさんのこれまでの質問を見直し、
そして、どのように答えたら良いかを考え、サンプルを用意し、
回答を書き上げるまで20分ほど要しました…。
「あんたに頼んだわけじゃない」と言われればそれまでですが…。)
>汎用性を持ったスクレイピングはできないのでしょうか
共通形式での配信を行うATOMやRSSとは違って、
共通性はありませんので、
「はじめに」書いたように調べることから始めます。
申し訳ありませんでした。
自分がどこまで把握しているかを、載せておくべきでした。
ただ、回答をいただいたことで自分の中でぼんやりとこうやればいいんじゃないかというところが、裏付けできたためすごく参考になりました。
ありがとうございます。
要素の調査まではできています。
しかしながら、各サイトで本文が書かれているところ(たとえばdiv class)が変わってしまうので、汎用性がありません。
汎用性を持ったスクレイピングはできないのでしょうか。
なお、構文解析にはsimple_html_dom.phpというパーサーを使用してはいます。
http://www.mibel.cs.tsukuba.ac.jp/~ceekz/ExtractUniqueBlock/
教師情報を必要としないニュースページ群からのコンテンツ自動抽出
教師情報を必要としないWebページ群のコンテンツ自動抽出ツールの提案
こちらをじっくり読んでください。
研究になったりもしているのですね。
参考にしたいと思います
>要素の調査まではできています。
2013/10/31 00:07:26それならそうと書いておいてください。
互いに長々と無駄な時間を過ごしてしまいました。
(whitedevさんのこれまでの質問を見直し、
そして、どのように答えたら良いかを考え、サンプルを用意し、
回答を書き上げるまで20分ほど要しました…。
「あんたに頼んだわけじゃない」と言われればそれまでですが…。)
>汎用性を持ったスクレイピングはできないのでしょうか
共通形式での配信を行うATOMやRSSとは違って、
共通性はありませんので、
「はじめに」書いたように調べることから始めます。
申し訳ありませんでした。
2013/10/31 20:28:38自分がどこまで把握しているかを、載せておくべきでした。
ただ、回答をいただいたことで自分の中でぼんやりとこうやればいいんじゃないかというところが、裏付けできたためすごく参考になりました。
ありがとうございます。