[閒聊] 讀取即時新聞標題的 php 檔
只是簡單寫一下,土法煉鋼+陽春的寫法,用我架在自己 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
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章