#b-navbar { height:0px; display:none; visibility:hidden; }

ページ

2015年5月3日日曜日

PHP:スクレイピングを簡単に行う関数

<?php
/* 利用例:sample

  $val = fetch_val_from_URL_ver3 (
   "http://www.yahoo.com/",
   "/lang=\"([\s\S]+?)\"/i"
  );

     print_r ( $val ) ; //en-US
     print "<br />";



  $array= fetch_val_from_URL_ver3 (
   "",
   "/lang=\"([\w\-]+?)\"[\s\S]+?<title>([\s\S]+?)<\/title>/i"
  );

     print_r ( $array ) ; //Array ( [0] => [1] => en-US [2] => Yahoo )
     print "<br />";



*/


function fetch_val_from_URL_ver3 ( $CRON_URL , $REGEX_val  ) {

/*

★メモ:
 ・日本語を正規表現に含む場合は、UTF8でコードを書いて下さい。
    それ以外は、関数の中のUTF-8に統一している箇所を修正してください。

 ・改行コードは正規表現が面倒になるので取得後に、一律削除しています。


★引数;

 ・CRON_URL は"http://~"からいれてください。
 ・CRON_URL を 空欄"" にすると、前回呼び出したHTMLを再利用します。
  ※ そのため、 $fv_global_html はグローバル変数名です。
 
 ・REGEX_val は正規表現です。
   日本語を正規表現に含む場合は、UTF8で表現式を書いて下さい。
 
 
★返り値:

 ・REGEX_val の正規表現で、(かっこ) で囲った表現部分を抽出して、値または配列を返します。
 
 ・REGEX_val の (かっこ)が1個の時は、値を返します。2個以上の時は、配列を返します。
 
 
 
★バグシューティング:

 ・関数を記述しているPHPファイル は UTF-8 ですか? (スクレイプの対象ページの文字コードは関係ありません。
  関数の中の mb_convert_encoding 処理で UTF8 に固定処理をしているからです。
  もしこの関数を、UTF-8以外のスクリプトで記述する場合は、関数内のmb_convert_encoding部分を修正して下さい )
 
 ・正規表現は正しいですか? regexpal.com が便利ですよ。
 ・正規表現に、タグの </ があるときは 「<\/」にエスケープしてください
 ・この関数内で、$fv_global_html という変数名をグローバルとして利用しています。

★ヒント

 ・相手先のサーバーのためにも、同じページを何度も呼ばないようにしましょう。
   CRON_URLを 空欄""にすると、前回呼び出した時のHTMLを再利用できます。
 
 ・改行を含む任意の一文字は [\s\S] 、 数値は ([\-\d\.\,]+?) を使うといいでしょう。
 
 ・UserAgentを変えるとこともできます

★その他

 ・無保証で無責任です。目的にかかわらず、自由に改変して利用できます。
  クレジット表記や、連絡は不要です。
 
 ・バグ等のご連絡 は、sakai[-_atmark_-]quel.jp へ
 ・Programmed by Hiroyuki.Sakai, Infolio,inc.

*/


 //設定 
 global $fv_global_html;
 $flg_ReUse_contents = false;
 unset($ary_match);
 
 //取得
 if ( $CRON_URL == "" ) {//urlがヌルの時は ReUse_contents をtrueに
   $flg_ReUse_contents = true;
 }
 
 if ( $flg_ReUse_contents == true ) {
  
  //$fv_global_htmlはそのまま再利用
  if ( $fv_global_html =="" ) {//空かどうかのチェックだけ行う
   print "No data URL:E:001 $CRON_URL ";
   print "<br /> " ;
   return false ;
  }
  
  
 }else {
  //新規取得
  
   //接続準備
   $options = array(
    'http' => array(
     'method' => 'GET',
     'header' => 'User-Agent: Mozilla/5.0 ( PHP fetch-val-from-URL-ver3 ) ',
    ),
   );
   $context = stream_context_create($options);

   //取得
   $fv_global_html = file_get_contents( $CRON_URL, false, $context);
   $fv_global_html = str_replace ("\r\n","\n",$fv_global_html);
   $fv_global_html = str_replace ("\r","\n",$fv_global_html);
   
   //UTF8に統一する
   $fv_global_html = mb_convert_encoding ($fv_global_html,"UTF-8",mb_detect_encoding($fv_global_html));
   
   unset ( $context ) ;
   
 }
 
 
 //改行は正規表現が面倒になるので一律削除 (このブロックが不要であればコメントアウトしてください)
 $fv_global_html =  str_replace("\r","",$fv_global_html ) ;
 $fv_global_html =  str_replace("\n","",$fv_global_html) ;
 
  
 //抽出
 preg_match( $REGEX_val , $fv_global_html ,$ary_match );
 
 
 //マッチがないとき
 if ( isset($ary_match[1]) ) {
   
 } else {
  $val = "" ;
  print "Nomatch E:003 <br />$REGEX_val<br />in $CRON_URL ";
  print "<br /> " ;
  return false ;
  
 }
 
 //数字ならばカンマ削除
 $ary_match = array_map (  function ( $vn ) {
  
  if ( preg_match("/[\d\.\,\/\s]+?/", $vn) ) {
   return str_replace ( "," , "" , $vn ) ;
  }else {
   return $vn ;
  }
  
 } , $ary_match  );
 
 
 //配列か変数値を返す
 if ( count($ary_match) == 2 ) {
  
  return $ary_match[1];
  
 }else {
  
  $ary_match[0]=NULL;
  return $ary_match;
  
 }
 

}




?>


Search Keyword: php, function, scraping , scraper class

2015年3月20日金曜日

解決法:Internet Explorer は動作を停止しました


これが何度も出てIEが起動できない。クラシュが乱発する。


▼
▼



[スタート] -> [コントロールパネル] →
 [ネットワークとインターネット] → [インターネットオプション]




▼

「詳細設定」のタブ →

リストの上の方にある、
[アクセラレータによるグラフィック] →
 [GPU レンダリングでなく、ソフトウェア レンダリングを使用する] の
チェック ボックスを オン ☑ にします。



OK

▼

IEを再起動

▼

解決した


---
当方の環境:
Windows7、IE11

2015年3月3日火曜日

GoogleのChromeブラウザで、お気に入りのアイコンが真っ白になる

強制終了などを行った時に、たまにクロームのファビコン(お気に入りのアイコン)が壊れることがあります。
ブックマークのアイコンが壊れたときは、次の手順でfaviconのキャッシュをクリアすると治りました。


>>
 1. Chromeを閉じて終了させる。 
    (windowsなら、タスクマネージャーからchoromeのプロセスを全て終了させるとなおよろしい)

 2. ユーザーフォルダーを開く:

Windows XPの場合:
C:\Documents and Settings\<username>\Local Settings\Application Data\Google\Chrome\User Data\Default
 
Windows 7 or Vistaの場合:
C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default

 <username>はご自分のユーザーアカウントに使われている文字列に置き換えてください
       
        MacOSXの場合:
         ~/Library/Application Support/Google/Chrome/Default/

 
3. Favicons というファイルを削除する

4.  Chromeを起動する

5. アイコンが復活しているはず。

6. 復活していなくても、ブックマークされているサイトにアクセスすれば復活するかも




出典参考:https://productforums.google.com/forum/#!topic/chrome-ja/YV6SZwMPiKc
当方の環境:Win7、Chrome40.0.2214
キーワード:まっしろ、

2014年10月24日金曜日

Firefoxが起動しない!原因はハードウェアアクセラレーション


セーフモードだと起動するが、設定をクリアしても、アンインストール→再インストールしてもダメ。毎回クラッシュレポータ (ご迷惑をおかけして申し訳ありません) だったが、どうやら原因はハードウェアアクセラレーションだったようだ。


>> 一部のグラフィックカードとドライバの組み合わせによっては、ハードウェアアクセラレーションを利用すると、Firefox がクラッシュするか、ページ上のテキストやオブジェクトの表示に問題が起こることがあります。
  1. メニューボタン New Fx Menu をクリックし、オプション を選択します。
  2. 詳細 パネルを選択し、一般 タブを選択します。
  3. ハードウェアアクセラレーション機能を使用する (可能な場合) オプションをクリックしてチェックを外してください。
  4. メニューボタン New Fx Menu をクリックし、終了 Close 29 をクリックします。
  5. Firefox を再び起動します。

これで解決した。

当方: Windows7 64bit Firefox 33.0




2014年9月30日火曜日

Unix思想

Unix思想


  • モジュール化の原則 : クリーンなインターフェイスで結合される単純な部品を作れ。

"ぶざまな姿をさらさずに複雑なソフトウェアを書く唯一の方法は、全体としての複雑さの度合いを下げることだ""つまり、適切に定義されたインターフェイスで結び付けられた単純な部品からシステムを作り上げるのだ。 こうすれば、ほとんどの問題は局所化されるし、全体を壊さずに部品だけを改良することも不可能ではなくなる。"--『The Art of UNIX Programming』より

  • 明確性の原則 : 巧妙になるより明確であれ。

  • 組み立て部品の原則 : 他のプログラムと組み合わせられるように作れ。

  • 分離の原則 : メカニズムからポリシーを切り離せ。エンジンからインターフェイスを切り離せ。

  • 単純性の原則 : 単純になるように設計せよ。複雑な部分を追加するのは、どうしても必要なときだけに制限せよ。

  • 倹約の原則 : 他のものでは代えられないことが明確に実証されない限り、大きなプログラムを書くな。

  • 透明性の原則 : デバッグや調査が簡単になるように、わかりやすさを目指して設計せよ。

  • 安定性の原則 : 安定性は、透明性と単純性から生まれる。


すべては変化する
仕様が固まることは無い
技術も常に進化する
こだわるな
最初から全部やろうとしない
どこからやるか
「何が一番やばいですか?」
最も困っているところから
お金、個人情報、……
新機能開発から
バグ修正のところから



迷ったらシンプルな方を選ぶ
シンプルさは信頼性の前提である(Dijkstra)
simple と easy は異なる(Rich Hicky の講演より)
エレガント
"Elegance is a combination of power and simplicity."
エレガンスは、力と単純性が結合して生まれる。
"Elegant code is not only correct but visibly, transparently correct."
エレガントなコードは、ただ正しいだけではなく目に見える透明な形で正しい。
Keep It Simple and Small
Keep It Small Stupid!



http://twada.herokuapp.com/presentations/wewlc/wewlc.html より