作者laechan (挥泪斩马云)
看板mud_sanc
标题[闲聊] 读取即时新闻标题的 php 档
时间Thu Jan 4 11:12:12 2018
只是简单写一下,土法炼钢+阳春的写法,用我架在自己 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://webptt.com/cn.aspx?n=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