[閒聊] 讀取即時新聞標題的 php 檔

看板mud_sanc (Sanctuary - 聖殿)作者 (揮淚斬馬雲)時間7年前 (2018/01/04 11:12), 7年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
只是簡單寫一下,土法煉鋼+陽春的寫法,用我架在自己 pc 上的 linux 跑的: // 以下檔案是修改自 nobu 有先寫給 sanc 的 get_news.php 檔 // nobu 對讀回來的東西是把它當成物件處理, 我是硬幹直接當成字串 #!/usr/bin/php -q <?php // 讀網頁內容存成$fh, 傳回來是一堆亂碼 $fh=file_get_contents('https://tw.appledaily.com/new/realtime'); // 對$fh做編碼,先做 UTF-8 編碼,再做 BIG5 編碼 // 有些主機只需做一次編碼就可以 // 要使用 mb_convert_encoding 函數需先安裝 mbstring // yum install php-mbstring $encode=mb_convert_encoding($fh,'BIG5','UTF-8'); // 對$encode做 explode, 它參數的給法跟 sanc 顛倒, 存成 $tmps 字串陣列 $tmps=explode('tcode="',$encode); // 讀出時間字串, 依給定的格式顯示(年-月-日) // 在字串處理裡頭, .就是+ 的意思 // 要使用 DateTime 函數需先編輯 /etc/php.ini 在 [Date] 那邊 // 啟用 Date: Asia/Taiwan $date = new DateTime(); $msg = $date->format('Y-m-d')." https://tw.appledaily.com/new/realtime\n"; $mark=0; //對 $tmps 做 foreach, 這裡也跟 sanc 顛倒 foreach($tmps as $tmp) { // explode 出來的東西, 第0個不處理 if($mark==0) { $mark=1; continue; } // 找每一個 $tmp 的第一個 " 出現的位置 // 因為我是對 tcode=" 這樣的東西做 explode, 則每一個 $tmp // 都是新聞標題開頭, 而且標題的結尾必有 " // 也就是原始是 tcode="13億人都驚呆了! 天空出現異象" bla bla // ^^^^^^^ ^ // explode 的標的 ↑找這個的位置 $a=strpos($tmp,'"'); // 取出 $tmp 的標題, 從 0~ "的位置 這樣的長度出來 // 它實際取出來的就是 13億人都驚呆了! 天空出現異象 // 然後對取出來的東西加 \n, 再做字串的累加, 存到 $msg 內 $msg.=substr($tmp,0,$a)."\n"; } // 最後 print 出 $msg echo($msg); // 也可以存檔 file_put_contents("/home/xxx/news",$msg); ?> 這樣的 php 檔假設叫 news.php 寫好後,ls -l,它預設是 -rw-rw-r-- (664) ,這時可以 chmod 764 把它變成 -rwxrw-r--,這樣 ./news.php 就可以直接 執行。 它需要的前置作業是先裝 apache yam install httpd (裝apache) service httpd start chkconfig httpd on 再裝以下的東西 yum install mod_perl yum install mod_wsgi yum install php php-pear linux 裝好這三個後,php 檔就可以像腳本檔那樣直接執行使用, 我個人是覺得比 python 或 shell 等東西編寫及使用來的方便。 重點是當它可以像腳本那樣執行時,就可以編進 crontab # crontab -l 0 * * * * cd /home/xxx;./news.php 上面就是每一個整點,它會去執行一次 news.php,然後產生 news 檔出來,以下是測試結果 > ./news.php 2018-01-04 https://tw.appledaily.com/new/realtime 驚!藝人陳喬恩酒駕遭逮 遭移送北檢 懷孕小三被正宮扒到全裸狠踩 老外看傻眼 【爆料片】陸軍爆採購弊案 無良廠商害中型戰術輪車無胎可用 今下午起變天!明有雨 一直濕到下周一 誆包養誘小模上床 淫男偷拍淫片逼「抓交替」 唉呀見鬼啦!憲哥賓利車怎亂停 她實踐365存錢法爽宰小豬 13萬年終讓網友「求表格」 徐若瑄CEO尪1打3 帶兒女守岳父喪 傳30頁PDF怒鞭婚攝構圖爛 新人挨轟根本奧客 「槓上開花」興奮過頭 老翁猝死魂斷麻將桌 【法律問蘋果】鄰犬惡臭難聞 管委會竟束手無策? (不過實際上上面的不是即時新聞的標題,我後來的程式有改過了, 但概念跟上面一樣都是對讀回來的字串以特定的子字串做拆解) 一、我會用 crontab 了。不過 crontab -e 在 linux 是 vi 模式, 在 sanc 則最好不要用 vi 或 ed 模式,我 code 還得改一下, 這是為了避免兩人以上共同編輯時會出問題。 二、我稍微會用 php 寫腳本了。如我之前所說的,我最近會嚐試在 sanc 的主機上寫讀 mudlist 網頁的內容然後產生我想要的結果 ,如果寫得出來,以後線上就能增加 mudlist 的列表 三、但我更重要的目的是透過這個,學會如何在 linux 主機上,去 讀取其它主機的資料,傳回來,處理後,擷取出我想要的結果。 我每天在公司要做的一些 routing test 的東西,就可以透過 這個來處理,我每天只需要固定時段去看執行後的結果即可。 或是在 windows 下執行 php 腳本 http://blog.webgolds.com/view/150 以上也做一點分享,php 現階段不打算學得太深入,先寫出能 work 的 code,之後有時間再慢慢研究更佳的寫法。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.117.106.224 ※ 文章網址: https://www.ptt.cc/bbs/mud_sanc/M.1515035536.A.062.html ※ 編輯: laechan (122.117.106.224), 01/04/2018 11:16:58 ※ 編輯: laechan (122.117.106.224), 01/04/2018 11:21:56
文章代碼(AID): #1QJPkG1Y (mud_sanc)
文章代碼(AID): #1QJPkG1Y (mud_sanc)