Neo Inspiration

Avatar

中の人:jakkrokk (HN統一しました) がphp,javascript,air,flex などなど好き勝手書いてます。仕事は主にWEBシステムの設計と開発、SEO全般など。

ブログから本文を取得するPHP

私用で前に作ったんですが、
今回別のアプリで流用するのでクラスにしたので
ついでに公開します。

//2008/07/29 リンク修正
ダウンロードはこれ
Class.GetTitleAndBody.zip

CSSレイアウトのDIVかテーブルレイアウトのTDで分割して
一番リンク率が低い
設定値よりリンク率が低い
設定値よりタグ率が低い
画像率が一番高い
文字数が規定以上
一番大きいパラグラフ
ここらへんにポイントを割り振ってはじき出してます

なので、ITMEDIAのようにサイドバーがえらく充実してるとことか
<div class=”brclear”>なんてひどいことしてるとことかは
うまくいきませんね。

使い方

こんなかんじです。

$Html = new GetTitleAndBody();
$Html->GetHtml(”http://neoinspire.net”);
if(empty($Html->error)){
  echo $Html->title; //タイトルっぽいもの
  echo $Html->body; //本文っぽいもの
  echo $Html->body_length; //文字数
}else{
  echo $Html->error; //エラー出力
}

本文はbrやa、li,strong など残せそうなのは一応残してあるので、
純粋にテキストにしたいなら strip_tags($Html->body) で。

パラメータとか

コンストラクタのパラメータはこんなかんじです

1:$_body_len=有効にする記事の文字数の下限値(400ならマルチバイトで400文字以上じゃないと無効)
2:$_link_per=有効にするリンクの出現率の上限値(0.1ならリンクが1割以下じゃないと無効)
3:$_tag_per=有効にするHTMLタグの出現率の上限値(0.1ならタグが1割以下じゃないと無効)
4:$_html_point;=この点数を超えないと対象にならない(デフォルト8点)
5:$_weight=設定値の変更(Array)
  $_array['キー']=評価点 の形式
    キーリスト
    max_link_weight;    //リンク率が一番小さい(デフォルト2点)
    link_weight;      //リンクが規定値より低い(デフォルト3点)
    tag_weight;      //タグ率が一番小さい(デフォルト1点)
    max_img_weight;    //画像率が高い(デフォルト1点)
    body_weight;      //文字数規定値より多い(デフォルト1点)
    body_length_weight;   //文字数が全DIVの中で一番多い(デフォルト2点)

第5パラメータは配列で
$array['body_weight']=5
とかすれば
「文字数規定値より多い」という項目のポイントが5になる ってういかんじです。

最後

パラメータ変えなくても割と取れます!

//2008/07/29 リンク修正
ダウンロードはこれ
Class.GetTitleAndBody.zip

関連記事:

6 Comments

  1. Shin

    本文を抽出する方法を探していて、PHPでは見つからず
    やはり自分で作るしかないか…と思っていたところ
    偶然にもこのページにたどりつき狂喜していたのですが、
    ダウンロード先(http://neoinspire.net/wp-content/uploads/2007/11/classgettitleandbody1.zip)
    が404になっています…
    公開を中止されたのでしょうか?
    もしよろしければ使わせて頂きたいと思っています、よろしくお願いします。

  2. Jakk

    Shinさん 
    コメントありがとうございます。

    URLですが、Wordpressのアップロードの際にファイルを手で移動したので、
    リンクがきれてただけでした。。

    http://neoinspire.net/wp-content/uploads/2007/11/GetTitleAndBody.Class.zip
    ↑これが新しいURLです

    ちなみに精度はあまり期待しないでくださいw
    6~7割取れればいいかと。。

    ではでは。

  3. Shin

    ダウンロードさせていただきました、ありがとうございます。

  4. ブログから本文を取得するphpソースを探していてたどろちきました。
    ダウンロードさせて頂きます。
    簡単な実験アプリを個人でやるぶんに使用させて頂こうと思っております。
    ご報告までにて・・・。

  5. Jakk

    コメントありがとうございます。

    ダイブ前につくったやつなので、
    上手く動いてるのか不安ですが、
    うまくご期待にそえていれば幸いです。

  6. ありがとうございます。
    何か簡単なアプリができましたらご報告させていただきます。

Twitter