整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          PHP爬取JSON數據寫入表格

          PHP爬取JSON數據寫入表格
          <?php
          date_default_timezone_set('PRC');
          function unicodeDecode($unicode_str){
              $json='{"str":"'.$unicode_str.'"}';
              $arr=json_decode($json,true);
              if(empty($arr)) return '';
              return $arr['str'];
          }
          function do_post($url, $param,$token,$cookie) {
              $ch=curl_init();//初始化curl
          	//$this_header=array("Content-Type: multipart/form-data");
          	curl_setopt($ch, CURLOPT_HTTPHEADER, array(
              'Content-Type: application/json',
              'Content-Length: ' . strlen($param),$token)
          );
              curl_setopt($ch, CURLOPT_URL,$url);//抓取指定網頁
          	//curl_setopt($ch, CURLOPT_HEADER,$this_header);
              curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//執行后直接打印出來,方便調試
              curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
              curl_setopt($ch, CURLOPT_POSTFIELDS, $param); 
          	//curl_setopt($ch, CURLOPT_TIMEOUT,2);//請求超時10s
          	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);// 跳過證書檢查
              curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);// 不從證書中檢查SSL加密算法是否存在
          	curl_setopt($ch, CURLOPT_COOKIE, $cookie);
              $data=curl_exec($ch);//運行curl
              curl_close($ch);
          	return $data;
          }
           
           
          function ArrayToExcel($arr,$name)
          {
            require_once 'PHPExcel.php';
           //實例化
           $objPHPExcel=new PHPExcel();
           /*右鍵屬性所顯示的信息*/
            $objPHPExcel->GETProperties()->setCreator("xuan")  //作者
                 ->setLastModifiedBy("xuan")  //最后一次保存者
                 ->setTitle('數據EXCEL導出')  //標題
                 ->setSubject('數據EXCEL導出') //主題
                 ->setDescription('導出數據')  //描述
                 ->setKeywords("excel")   //標記
                 ->setCategory("result file");  //類別 
           //設置當前的表格 
           $objPHPExcel->setActiveSheetIndex(0);
           $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);#設置單元格寬度
          $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
          $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
          $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(8);
           // 設置表格第一行顯示內容
           $objPHPExcel->GETActiveSheet()
            ->setCellValue('A1','所在黨支部')
            ->setCellValue('B1','姓名')
            ->setCellValue('C1','性別')
            ->setCellValue('D1','身份證號')
            ->setCellValue('E1','聯系方式');
           $key=1;
           /*以下就是對處理Excel里的數據,橫著取數據*/
           foreach($arr as $v){
           
           //設置循環從第二行開始
           $key++;
                 //Excel的第A列,name是你查出數組的鍵值字段,下面以此類推->setCellValue('F'.$key,$v['d1Name'])
          	   if($v['a01004']=='1')
          	   {
          		   $sex='男';
          	   }
          	   else
          	   {
          		   $sex='女';
          	   }
            $objPHPExcel->GETActiveSheet()
               ->setCellValue('A'.$key,$v['orgName'])
               ->setCellValue('B'.$key,$v['a01001'])
          ->setCellValue('C'.$key,$v['a01004'])
          ->setCellValue('D'.$key,$v['a01085'])
          ->setCellValue('E'.$key,$v['a37017']);
           }
           //設置當前的表格 
           $objPHPExcel->GETDefaultStyle()->GETAlignment() //設置居中顯示
                  ->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER)//垂直居中
                  ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//水平居中
           $objPHPExcel->setActiveSheetIndex(0);
            ob_end_clean();  //清除緩沖區,避免亂碼
            header('Content-Type: application/vnd.ms-excel'); //文件類型
            header('Content-Disposition: attachment;filename="'.$name.'.xls"'); //文件名
            header('Cache-Control: max-age=0');
            header('Content-Type: text/html; charset=utf-8'); //編碼
            $objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');  //excel 2003
            $objWriter->save('php://output'); 
            exit;
          }
           
          if(isset($_GET['name']) and $_GET['name']!=null)
          {
          	$name=$_GET['name'];
          	$datas=array();
          	$token=$_GET['token'];
          	$ss=$_GET['token'];
          	$cookie=$_GET['cookie'];
          	$headers=array($ss);
          	$param='{"pagesize":2000,"pagenum":0,"orgCode":"000002000008000008000009000005","conditions":[],"orgId":"16e53e4f-b521-413a-ba07-37745245bd55","orgType":"611"}';
          	$url='http://10.243.19.81:7710/api/imis/mainQuery';
          	$jsondata=do_post($url, $param,$token,$cookie);
          	//echo $jsondata;
              $datas=json_decode($jsondata,true)['datalist'];
          	ArrayToExcel($datas,$name);
          }
          ?>
          <style>
          #cookie{
                  width: 30%;
                  border: 1px solid #e2e2e2;
                  height: 40px;
                  padding:0 0 0 10px;
              }
          #header{
                  width: 69%;
                  border: 1px solid #e2e2e2;
                  height: 40px;
                  padding:0 0 0 10px;
              }
          #keywords{
                  width: 15%;
                  border: 1px solid #e2e2e2;
                  height: 40px;
                  padding:0 0 0 10px;
              }
          #search{
                  width: 10%;
                  border: 1px solid #e2e2e2;
                  height: 42px;
                  text-align: center;
                  line-height: 42px;
                  cursor: pointer;
              }
          </style>
          <form method="GET" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
          	<input id="keywords" type="search" name="name" placeholder="輸入文件名" spellcheck="false" value="<?php if(isset($_GET['name']))echo $_GET['name'];?>"  autocomplete="off"/>
          	<input id="cookie" type="cookie" name="cookie" placeholder="cookie" spellcheck="false" value="<?php if(isset($_GET['cookie']))echo $_GET['cookie'];?>"  autocomplete="off"/>
          	<input id="token" type="cookie" name="token" placeholder="Authorization" spellcheck="false" value="<?php if(isset($_GET['token']))echo $_GET['token'];?>"  autocomplete="off"/>
          	<input id="search" type="submit" value="導出" name="導出"/>
          </form>

          到工具:PHPEXCEL類,百度可搜索下載

          年人只管利益,小孩子才分對錯。。。

          ---- 網易云熱評

          一、GET請求

          1、get可以理解為一個系統定義好的數組

          2、通過var_dump看一下GET的類型,瀏覽器訪問網址,后面加上"?aiyou=bucuo",相當于數組名為GET,鍵是aiyou,值是bucuo

          3、一般get請求都是訪問某個文件

          4、通過GET寫文件

          <?php
          $a=$_GET['aiyou'];//取鍵為aiyou的值
          $b=fopen("aiyou.txt", "w+");//打開文件
          fwrite($b, $a);//寫入文件
          ?>

          二、POST請求

          1、新建一個html頁面

          <html>
          <head>
          <meta charset="utf-8">
          <title>web安全工具庫</title>
          </head>
          <body>
          <form action="aiyou.php" method="post">
          名字: <input type="text" name="fname">
          密碼: <input type="text" name="pass">
          <input type="submit" value="提交">
          </form>
          </body>
          </html>

          2、新建一個獲取數據的頁面aiyou.php

          <?php
          header("Content-Type:text/html;charset=utf-8");
          echo "歡迎";
          echo $_POST["fname"];
          echo "登錄";
          ?>

          3、瀏覽器提交

          三、兩者區別

          1、安全性:GET請求中url中可見提交的數據、POST不可見

          2、數據限制:GET只能傳遞ASCII字符,且最長是2048個字符,POST不受限制

          3、歷史信息:GET參數能保留在瀏覽器歷史中,POST數據不能保存在瀏覽器歷史中


          禁止非法,后果自負

          天被安排做一個抓取。

          一、 什么是php采集程序?

          二、 為什么要采集?

          三、 采集些什么?

          四、 如何采集?

          五、 采集思路

          六、 采集范例程序

          七、 采集心得

          什么是php采集程序?

          php采集程序,也叫php小偷,主要是用于自動搜集網絡上web頁里特定內容,用php語言寫的web程序,運行于支持php的平臺上。談到"自動搜集",你可能聯想到百度goole,聯想到搜索引擎所做的事情。php采集程序,正是做類似的工作。

          為什么要采集?

          互聯網正以飛快的速度在發展,web數據每天以幾何級數據量遞增,面對這龐大的數據,作為一個網站管理員的你,該如何搜集自己所需要的信息呢?特別對某個 或某幾個同類網站,你需要它們的大量信息,來充實你的網站內容,難道就只能復制粘貼的過日子嗎?一個網站管理員,你真的就得花大量時間去搞原創內容,而與整個互聯網信息量的發展速度脫節嗎?這些問題的解決方法只有一個:采集。如果有那么一個程序,你幫你的網站自動或半自動的采集你所需要的特定內容,即時更 新你網站的信息,是否是你夢寐以求的呢?這就是采集程序出現的原因所在。

          采集些什么?

          這要看你做的什么類型的網站了。如果你做圖片站,就采集圖片;做音樂站,就采集mp3,做新聞站,就采集新聞等等。一切根據你網站的內容架構需要而定。確定你要采集的東西,才好寫出相應的采集程序。

          如何采集?

          通常采集程序,都是有的放矢的。也就是需要有目標網站,搜集一些你需要的采集內容的網站,分別對其html代碼進行分析,找出規律性的東西,依據你要采集 的特定內容,寫出php代碼。采集到你要的東西以后,你可以選擇自己需要的存放方式。比如直接生成html頁面,或是放進數據庫,作進一步處理或是存放成 特定的形式,以備后用。

          采集思路

          采集程序的思路很簡單大體可以分為以下幾個步驟:

          1. 獲取遠程文件源代碼(file_get_contents或用fopen).

          2.分析代碼得到自己想要的內容(這里用正則匹配,一般是得到分頁)。

          3.跟根得到的內容進行下載入庫等操作。

          在這里第二步有可能要重復的操作好幾次,比如說要先分析一下分頁地址,在分析一下內頁的內容才能取得我們想要的東西。

          [html]

          1. <?php

          2. /****獲取遠程文件源代碼常用三種方法***/

          3. /***方法一、 fopen(),stream_context_create()方法****/

          4. $opts=array(

          5. 'http'=>array(

          6. 'method'=>"GET",

          7. 'header'=>"Accept-language: en\r\n" .

          8. "Cookie: foo=bar\r\n"

          9. )

          10. );

          11. $context=stream_context_create($opts);

          12. $fp=fopen('http://www.example.com', 'r', false, $context);

          13. fpassthru($fp);

          14. fclose($fp); /******方法二、 socket*******/

          15. function get_content_by_socket($url, $host){

          16. $fp=fsockopen($host, 80) or die("Open ". $url ." failed");

          17. $header="GET /".$url ." HTTP/1.1\r\n";

          18. $header .="Accept: */*\r\n";

          19. $header .="Accept-Language: zh-cn\r\n";

          20. $header .="Accept-Encoding: gzip, deflate\r\n";

          21. $header .="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; InfoPath.1; .NET CLR 2.0.50727)\r\n";

          22. $header .="Host: ". $host ."\r\n";

          23. $header .="Connection: Keep-Alive\r\n";

          24. //$header .="Cookie: cnzz02=2; rtime=1; ltime=1148456424859; cnzz_eid=56601755-\r\n\r\n";

          25. $header .="Connection: Close\r\n\r\n";

          26. fwrite($fp, $header);

          27. while (!feof($fp)) {

          28. $contents .=fgets($fp, 8192);

          29. }

          30. fclose($fp);

          31. return $contents;

          32. }

          33.

          34. /******方法三、file_get_contents (),stream_context_create() 方法三********/

          35. $opts=array(

          36. 'http'=>array(

          37. 'method'=>"GET",

          38. 'header'=>"Content-Type: text/html; charset=utf-8"

          39. )

          40. );

          41. $context=stream_context_create($opts);

          42. $file=file_get_contents('http://www.sohu.com/', false, $context);

          43.

          44. /******方法四、 PHP的cURL http://www.chinaz.com/program/2010/0119/104346.shtml*******/

          45. $ch=curl_init();

          46. // 2. 設置選項,包括URL

          47. curl_setopt($ch, CURLOPT_URL, "http://www.sohu.com");

          48. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

          49. curl_setopt($ch, CURLOPT_HEADER, 0);

          50. curl_setopt($ch,CURLOPT_HTTPHEADER,array ("Content-Type: text/xml; charset=utf-8","Expect: 100-continue"));

          51. // 3. 執行并獲取HTML文檔內容

          52. $output=curl_exec($ch);

          53. var_dump($output);

          54. // 4. 釋放curl句柄

          55. curl_close($ch);

          56.

          57. /*注意

          58. 1.使用file_get_contents和fopen必須空間開啟allow_url_fopen。方法:編輯php.ini,設置 allow_url_fopen=On,allow_url_fopen關閉時fopen和file_get_contents都不能打開遠程文件。

          59. 2. 使用curl必須空間開啟curl。方法:windows下修改php.ini,將extension=php_curl.dll前面的分號去掉,而且需 要拷貝ssleay32.dll和libeay32.dll到C:/WINDOWS/system32下;Linux下要安裝curl擴展。

          60. */

          61. ?>

          采集范例程序

          [html]

          1. /*一個圖片下載函數*/

          2. function getimg($url,$filename){

          3. /*判斷圖片的url是否為空,如果為空停止函數*/

          4. if($url==""){

          5. return false;

          6. }

          7. /*取得圖片的擴展名,存入變量$ext中*/

          8. $ext=strrchr($url,".");

          9. /*判斷是否是合法的圖片文件*/

          10. if($ext!=".gif" && $ext!=".jpg"){

          11. return false;

          12. }

          13. /*讀取圖片*/

          14. $img=file_get_contents($url);

          15. /*打開指定的文件*/

          16. $fp=@fopen($filename.$ext,"a");

          17. /*寫入圖片到指點的文件*/

          18. fwrite($fp,$img);

          19. /*關閉文件*/

          20. fclose($fp);

          21. /*返回圖片的新文件名*/

          22. return $filename.$ext;

          23. }

          采集圖片php程序

          [html]

          1. 復制代碼

          2. <?php

          3. /**

          4. * 采集圖片php程序

          5. *

          6. * Copyright(c) 2008 by 小超(ccxxcc) All rights reserved

          7. *

          8. * To contact the author write to {@link mailto:ucitmc@163.com}

          9. *

          10. * @author ccxxcc

          11. * @version $Id: {filename},v 1.0 {time} $

          12. * @package system

          13. */

          14.

          15. set_time_limit(0);

          16. /**

          17. * 寫文件

          18. * @param string $file 文件路徑

          19. * @param string $str 寫入內容

          20. * @param char $mode 寫入模式

          21. */

          22. function wfile($file,$str,$mode='w')

          23. {

          24. $oldmask=@umask(0);

          25. $fp=@fopen($file,$mode);

          26. @flock($fp, 3);

          27. if(!$fp)

          28. {

          29. Return false;

          30. }

          31. else

          32. {

          33. @fwrite($fp,$str);

          34. @fclose($fp);

          35. @umask($oldmask);

          36. Return true;

          37. }

          38. }

          39.

          40. function savetofile($path_get,$path_save)

          41. {

          42. @$hdl_read=fopen($path_get,'rb');

          43. if($hdl_read==false)

          44. {

          45. echo("<span style='color:red'>$path_get can not get</span>");

          46. Return ;

          47. }

          48. if($hdl_read)

          49. {

          50. @$hdl_write=fopen($path_save,'wb');

          51. if($hdl_write)

          52. {

          53. while(!feof($hdl_read))

          54. {

          55. fwrite($hdl_write,fread($hdl_read,8192));

          56. }

          57. fclose($hdl_write);

          58. fclose($hdl_read);

          59. return 1;

          60. }

          61. else

          62. return 0;

          63. }

          64. else

          65. return -1;

          66. }

          67.

          68. function getExt($path)

          69. {

          70. $path=pathinfo($path);

          71. return strtolower($path['extension']);

          72. }

          73.

          74. /**

          75. * 按指定路徑生成目錄

          76. *

          77. * @param string $path 路徑

          78. */

          79. function mkDirs($path)

          80. {

          81. $adir=explode('/',$path);

          82. $dirlist='';

          83. $rootdir=array_shift($adir);

          84. if(($rootdir!='.'||$rootdir!='..')&&!file_exists($rootdir))

          85. {

          86. @mkdir($rootdir);

          87. }

          88. foreach($adir as $key=>$val)

          89. {

          90. if($val!='.'&&$val!='..')

          91. {

          92. $dirlist .="/".$val;

          93. $dirpath=$rootdir.$dirlist;

          94. if(!file_exists($dirpath))

          95. {

          96. @mkdir($dirpath);

          97. @chmod($dirpath,0777);

          98. }

          99. }

          100. }

          101. }

          102.

          103. /**

          104. * 從文本中取得一維數組

          105. *

          106. * @param string $file_path 文本路徑

          107. */

          108. function getFileListData($file_path)

          109. {

          110. $arr=@file($file_path);

          111. $data=array();

          112. if(is_array($arr) && !empty($arr))

          113. {

          114. foreach($arr as $val)

          115. {

          116. $item=trim($val);

          117. if(!empty($item))

          118. {

          119. $data[]=$item;

          120. }

          121. }

          122. }

          123. Return $data;

          124. }

          125.

          126. //采集開始

          127.

          128. //傳入自己的需要采集的圖片url列表文本文件 每個圖片url寫一行

          129. $url_file=isset($_GET['file'])&&!empty($_GET['file'])?$_GET['file']:null;

          130. $txt_url="txt/".$url_file;

          131.

          132. $urls=array_unique(getFileListData($txt_url));

          133. if(empty($urls))

          134. {

          135. echo('<div style="color:red">無鏈接地址</div>');

          136. die();

          137. }

          138. $save_url="images/".date("y_m_d",time())."/";

          139. mkDirs($save_url); //按日期建立文件夾

          140. $i=1;

          141. if(is_array($urls)&&count($urls))

          142. {

          143. foreach($urls as $val)

          144. {

          145. savetofile($val,$save_url.date("His",time())."_".$i.".".getExt($val));

          146. echo($i.".".getExt($val)." got\n");

          147. $i++;

          148. }

          149. }

          150.

          151. echo('<div style="color:green">finish</div>');

          152.

          153. ?>

          采集心得

          共享一下個人的采集心德:

          1.不采那些作防盜鏈了的站,其實可以作假來路但是這樣的站采集成本太高

          2.采集盡量快的站,最好在本地進行采集

          3.采集時有很多時候可以先把一部分數據存入數據庫,等以后進行下一步的處理。

          4.采集的時候一定要作好出錯處理,我一般都是如果采集三次沒有成功就跳過。以前經常就因為一條內容不能采就卡在那里一直的采。

          5.入庫前一定要作好判斷,檢查內容的合法,過濾不必要的字符串。

          后記:對于大部分轉行的人來說,找機會把自己的基礎知識補齊,邊工作邊補基礎知識,真心很重要。

          "我們相信人人都可以成為一個IT大神,現在開始,選擇一條陽光大道,助你入門,學習的路上不再迷茫。這里是北京尚學堂,初學者轉行到IT行業的聚集地。"


          主站蜘蛛池模板: 久久4k岛国高清一区二区| 无码8090精品久久一区| 精品欧洲av无码一区二区14| 蜜桃视频一区二区三区| 亚洲国产一区在线观看| 国产亚洲自拍一区| 色一情一乱一伦一区二区三区| 日韩精品一区二区三区色欲AV| 岛国无码av不卡一区二区| 亚洲日韩国产一区二区三区| 国产一区二区好的精华液| 亚洲AV无码一区二区一二区| 精品国产一区二区三区四区| 91在线视频一区| 国产成人久久精品一区二区三区 | 久久亚洲中文字幕精品一区| 国产在线精品一区二区| 成人一区专区在线观看| 亚洲Av无码国产一区二区| 亚洲第一区二区快射影院| 精品少妇ay一区二区三区| 亚洲福利电影一区二区?| 国产日韩一区二区三区| 亚洲综合av一区二区三区| 中文字幕av一区| 国产精品免费视频一区| 精品人妻一区二区三区四区 | 精品国产一区二区三区在线观看 | 国产精品制服丝袜一区| 91秒拍国产福利一区| 亚洲综合色一区二区三区| 老熟妇高潮一区二区三区| 国产伦精品一区二区三区免费下载 | 精品欧洲av无码一区二区14| 中文字幕一区二区三区人妻少妇| 精品国产一区二区三区| 八戒久久精品一区二区三区| 精品国产一区二区三区2021| 日本免费电影一区二区| 老熟妇仑乱一区二区视頻| 亚洲日韩国产欧美一区二区三区 |