google検索結果を取得し、指定したサイトのトップページに含まれるキーワード数を取得するAIRサンプルです。

google検索結果を取得し、指定したサイトのトップページに含まれるキーワード数を取得するAIRサンプルです。

<?xml version="1.0" encoding="utf-8"?>
  <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
      <![CDATA[ 
        import mx.rpc.events.ResultEvent;
        import mx.rpc.events.FaultEvent;
        import mx.controls.Alert;

        //google検索
        public function GoogleSearch(event:Event):void
        {
          var uv:URLVariables = new URLVariables();

          uv.q = q.text;//検索文字
          uv.num = "50";//検索結果数
          
          googlesearch.url = "http://www.google.co.jp/search"
          googlesearch.request = uv;
          googlesearch.send();
        }

        //サイト検索
        public function SiteSearch(event:Event):void
        {
          var item:Object = datagrid.selectedItem;
          var data:Object = datagrid.dataProvider;
          if (item == null) {
            Alert.show("未選択です。");
            return;
          }

          sitesearch.url = data[item.check - 1].siteurl;
          sitesearch.send();
        }

        //googleへの通信成功
        public function GoogleResponce(event:ResultEvent):void
        {
          var str:String = event.result.toString();//レスポンス
          var grid:Array = new Array();
          
          var pattern:RegExp = /<h2\sclass=r><a\shref="((https?|ftp):\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)"/g;
          var URLpattern:RegExp = /(https?|ftp):\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+/;
              
          var matchStr:Array = str.match(pattern);//google検索結果からURLを抽出
              
          for(var i:int=0; i<matchStr.length; i++){
                var word:Array;
                var data:Object = new Object();
                
            	word = matchStr[i].match(URLpattern);
            	if(!word[0].match(/^http:\/\/news.google.co.jp/)){
            	  data.id = i+1;
                  data.siteurl = word[0];
                  data.check = i+1;
                  grid[i] = data;
            	}
          }
            
          datagrid.dataProvider = grid;
          
        }

        //指定したサイトへの通信成功
        public function SiteResponce(event:ResultEvent):void
        {
          var res:String = event.result.toString();//レスポンス
          var pattern:RegExp = new RegExp(q.text, "g");
          var matchStr:Array = res.match(pattern);
          
          Alert.show('トップページ内にキーワード『' + q.text + '』' + matchStr.length + '個発見!');
        }

        //HTTP通信失敗
        public function Fault(event:FaultEvent):void
        {
          Alert.show(event.fault.faultString, "Error");
        }
		]]> 
    </mx:Script>
    <mx:HTTPService
      id="googlesearch"
      method="GET"
      result="GoogleResponce(event)" 
      fault="Fault(event)"
      resultFormat="text" />
      
    <mx:HTTPService
      id="sitesearch"
      method="GET"
      result="SiteResponce(event)" 
      fault="Fault(event)"
      resultFormat="text" />
	
    <mx:TextInput id="q" 
      x="130" y="32" 
      width="160" height="22" />
    <mx:Button x="130" y="95" 
      label="検索" 
      click="GoogleSearch(event)" 
      width="160" height="22" />
      
    <mx:DataGrid id="datagrid" width="338" height="219">
      <mx:columns>
        <mx:DataGridColumn headerText="順位" dataField="id" width="40"/>
        <mx:DataGridColumn headerText="google検索結果URL" dataField="siteurl" width="130" />
      </mx:columns>
    </mx:DataGrid>
    
    <mx:Button x="130" y="95" 
      label="サイト調査" 
      click="SiteSearch(event)" 
      width="160" height="22" />
    
  </mx:WindowedApplication>


ちなみに、デバッグしてないです。
日本語のキーワード等は不具合出ます。



[PR]Spreeの情報を集めています。

ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/