腦友記廣場 -> 新手上路 -> 從簡單開始--六合彩 登錄 -> 註冊 -> 回復主題 -> 發表主題

maninnet 2006-01-26 21:40
記得幾年前,在一個撩事谷中,討論網頁制作,有人問,如何在天氣的網頁加上溫度之類天氣訊息。
溫度的資料,可以在天文台中找,但是,每小時 update 用 html update 網頁,就顯得麻煩了。
我答:如果可以使用 cgi(如php/perl/asp)的程式,可以偷。
所謂偷,即現時大家所謂:Web Fetching

php 比較流行的原因,是因為可以在原來的 html 中,加上 tag 即執行,以下為從馬會取得六合彩的 Web Fdtching:

<html><head><title>六合彩結果</title></head>
<body>
六合彩結果<hr>
<?
$requesturl = "http://bet.hkjc.com/marksix/ch/index.aspx";
if ($fp = fopen("$requesturl","r")){
  while(!feof($fp))
  {
    $line .= fgets($fp,256);
  }
  fclose($fp);
}
eregi("下次攪珠(.*)閣下如中獎",$line,$matches);
$line=$matches[1];
$line=eregi_replace("</tr>","<br>",$line);
$allowed_tags = "<a>,<center>,<ul>,<li>,<b>,<br>,<img>,<strong>";
$line = strip_tags($line, $allowed_tags);
$line=eregi_replace("src=\"","src=\"http://bet.hkjc.com",$line);
$line="<strong>下次攪珠".$line."閣下如中獎獎金超過港幣$500萬,請於該期有關攪珠翌日(工作天)致電1817登記。";
echo($line);
?>
<hr>Mark 6 Coded by ManInNet
</body></html>

maninnet 2006-01-26 21:49
<?

?>
之間的,就是放置 php 的程式。以下一段:

$requesturl = "http://bet.hkjc.com/marksix/ch/index.aspx";
if ($fp = fopen("$requesturl","r")){
while(!feof($fp))
{
  $line = $line.fgets($fp,256);
}
fclose($fp);
}

就是將要取得的網頁地址,放在 $requesturl 這個變數內。
將網頁的內容,放在 $line 這個變數內。

php 的法則,就是所有變數,均須在前加 $,記住,自定變數無錢不行。

fopen,即 file open, 打開檔案,php 對網頁同對檔案使用同一個方法。

有兩個參數,第一個是檔案位置,第二個是模式,"r" 是表示讀取。

while 內,是一個不停重覆的工作,條件是 !feof,所謂 feof 即檔案終止。 !feof,即檔案不是終止。

然後每一行讀取,將結果放在 $line 內.

將字串連結,php 使用 .

上述這一段內容,各位可以抄下,每次使用時,就只改 $requesturl 這個變數。

maninnet 2006-01-26 21:57
網頁已經全部取下,並放在 $line 內,但是,我們並不需要全部內容照抄,我們要記我們所要的部分,其餘部分略去。
以下這句,就是抽取下次攪珠至如閣下中將之間的內容。

eregi("下次攪珠(.*)閣下如中獎",$line,$matches);
$line=$matches[1];

結果放回 $line 內。

其實網頁已經完成,不過,要作一些置換,以簡化畫面:

$line=eregi_replace("</tr>","<br>",$line);

這是將 html 內,每個表格的 row 換成換行。

$allowed_tags = "<a>,<center>,<ul>,<li>,<b>,<br>,<img>,<strong>";
$line = strip_tags($line, $allowed_tags);

$allowed_tags 是表示想保留什麼內容 <tag>, strip_tags 是消除 $line 內沒被保留 html tag

maninnet 2006-01-26 22:04
最後,最重要的是,圖片位置,原來的原始檔案,由於在同一 server, 所以,無須註明位置,但 web fetching 者要作一置換:
$line=eregi_replace("src=\"","src=\"http://bet.hkjc.com",$line);
eregi_replace 是將 $line 內所有 src=" 均換成 src="http://bet.hkjc.com
於是乎,圖形全部置換完成。

$line="<strong>下次攪珠".$line."閣下如中獎獎金超過港幣$500萬,請於該期有關攪珠翌日(工作天)致電1817登記。";

剛才我們將抽取下次攪珠閣下如中獎之間內容抽取,現在將 "下次攪珠" 放在 $line 頂,再將 "如閣下中獎 ....." 放在 $line 結尾,於是全篇內容補足。

可以在屏幕顯示出來,就使用以下這句:
echo($line);

大功告成。

制作報紙,都是用以上所提到的方法。

yuenlong 2006-06-04 11:27
不知什麼問題,最近六合彩的內容無法顯示出來,我弄了一番也未能解決,看起來 hkjc 都沒有什麼改動過啊。

同時,請問我想把數碼圖示改變為數字,如何把 <img src="...../no_15.gif">的 15 揪出來哩 ?


QUOTE:
攪珠結果:</td><td width="494" height="60" align="center" class="deepred12px"><table width="385" border="0" cellpadding="0" cellspacing="0"><tr align="center"><td><img src="/marksix/info/ch/images/mark6/icon/no_05.gif" ></td><td><img src="/marksix/info/ch/images/mark6/icon/no_09.gif" ></td><td><img src="/marksix/info/ch/images/mark6/icon/no_16.gif" ></td><td><img src="/marksix/info/ch/images/mark6/icon/no_29.gif" ></td><td><img src="/marksix/info/ch/images/mark6/icon/no_36.gif" ></td><td><img src="/marksix/info/ch/images/mark6/icon/no_47.gif" ></td><td width="30"><img src="/marksix/info/ch/images/mark6/icon/add.gif" width="12" height="12"></td><td><img src="/marksix/info/ch/images/mark6/icon/no_17.gif" ></td></tr></table></td></tr></table></td></tr><tr>



我攪唔掂馬會的 codes, 轉番用 UTF 會睇到 format 但係怪附號; 唯有借用一下星島的六合彩資料
http://www.terewong.com/pda/m6/mark6.php

QUOTE:
<html><head><meta http-equiv="Content-Type" content="text/html; charset=big5"><title>六合彩結果</title></head>
<body>
六合彩結果<hr>
<?
$requesturl = "http://www.singtao.com/";
if ($fp = fopen("$requesturl","r")){
  while(!feof($fp))
  {
    $line = $line.fgets($fp,256);
  }
  fclose($fp);
}
eregi("攪珠結果(.*)下期多寶",$line,$matches);
$line = $matches[1];
$allowed_tags = "<a>,<center>,<ul>,<li>,<b>,<br>,<img>,<strong>";
$line=eregi_replace("</tr>","<br>",$line);
$line=eregi_replace("src=\"","src=\"http://www.singtao.com/",$line);
$line = strip_tags($line, $allowed_tags);
$line="攪珠結果".$line."閣下如中獎獎金超過港幣$500萬,請於該期有關攪珠翌日(工作天)致電1817登記。";
echo($line);
?>
<hr>Mark 6 Coded by ManInNet
</body></html>

maninnet 2006-06-04 12:26
QUOTE:
下面是引用yuenlong於2006-06-04 11:27發表的:
不知什麼問題,最近六合彩的內容無法顯示出來,我弄了一番也未能解決,看起來 hkjc 都沒有什麼改動過啊。

同時,請問我想把數碼圖示改變為數字,如何把 <img src="...../no_15.gif">的 15 揪出來哩 ?


.......


Mark 6 當然要吸引 Big 6 大豪客, 有 refund, 所以, 網頁都作了改動. 用了 utf-8 編號. 單從外表看不出. 以前的 big 5 編碼當然取不到內容.

maninnet 2006-06-04 12:50
純文字版

maninnet 2006-06-04 13:00
又會諗到借用星島, 都 ok 播. 寫呢D野, 其實好簡單. 不過要俾 D 耐心

yuenlong 2006-06-06 23:58
Thanks maninnet !! 等我留意仲有乜野可以利用你的 php 教學

cmg 2006-11-20 17:37
純文字版不可以了, 如何修改?
THANKS !

yuenlong 2006-11-24 00:11
http://elife.maninnet.com/read.php?tid=83&u=83

修改了,請看一下可不可以。

yauson 2007-11-13 12:24
如果想用d variable 儲住
攪珠期數 : $a

攪珠日期 : $b

總投注額 : $c

攪珠結果 : $d[7]

咁點改好

maninnet 2007-11-14 03:05
由於六合彩修改了 url, 以下 code 要用記事本 utf-8 儲存

<strong>六合彩結果<hr></strong>
<?
$requesturl = "http://bet.hkjc.com/marksix/index.aspx?lang=ch";
if ($fp = fopen("$requesturl","r")){
  while(!feof($fp))
  {
    $line .= fgets($fp,256);
  }
  fclose($fp);
}
eregi("下期攪珠(.*)獲中第一組或第二組",$line,$matches);
$line=$matches[1];
$line=eregi_replace("</tr>","<br>",$line);
$line = eregi_replace("<img src=\"/marksix/info/ch/images/mark6/icon/no_"," ",$line);
$line = eregi_replace(".gif\" >"," ",$line);
$allowed_tags = "<a>,<center>,<ul>,<li>,<b>,<br>,<strong>";
$line = strip_tags($line, $allowed_tags);
$line = eregi_replace("(<br>){2,5}","<br>",$line);
$line="<strong>下次攪珠".$line."閣獲中第一組或第二組獎金超過港幣500萬元的幸運兒(包括投注戶口持有人),必須於有關攪珠日翌日之指定時間內致電1817熱線登記。";
echo($line);
?>
<hr>Mark 6 Coded by ManInNet
</body></html>

maninnet 2007-11-14 03:43
精簡版:

<strong>六合彩結果<hr></strong>
<?
$requesturl = "http://bet.hkjc.com/marksix/index.aspx?lang=ch";
if ($fp = fopen("$requesturl","r")){
  while(!feof($fp))
  {
    $line .= fgets($fp,256);
  }
  fclose($fp);
}
eregi("下期攪珠(.*)獲中第一組或第二組",$line,$matches);
$line=$matches[1];
$line=eregi_replace("</tr>","<br>",$line);
$line = eregi_replace("<img src=\"/marksix/info/ch/images/mark6/icon/no_"," ",$line);
$line = eregi_replace(".gif\" >"," ",$line);
$allowed_tags = "<a>,<center>,<ul>,<li>,<b>,<br>,<strong>";
$line = strip_tags($line, $allowed_tags);
$line = eregi_replace("(<br>){2,5}","<br>",$line);
eregi("<strong>攪珠結果(.*)派彩",$line,$matches);
$line = $matches[1];
echo($line);
?>
<hr>Mark 6 Coded by ManInNet
</body></html>

maninnet 2007-11-14 03:46
QUOTE:
引用第11樓yauson2007-11-13 12:24發表的「」:
如果想用d variable 儲住
攪珠期數 : $a

攪珠日期 : $b

.......



看精簡版輸出的原始檔:

攪珠期數 :07/132 <br>攪珠日期

eregi("<strong>攪珠期數:(.*)<br>攪珠日期",$line,$matches);
$a = $matches[1];


餘類推

zozzen 2007-11-28 10:10
好文好文! 照道理乜網站都 fetch 到, 但對方見你係咁 fetch , 會唔會 ban server 架? 有冇方法避免呢?

maninnet 2007-11-28 11:45
如果集中某一 server,首先 Bandwidth 的問題,其次,就是容易被人發覺而 ban server.

但如果掛在不同的 server 中,由於人流分散,就不易被 Ban。

本網發表有關 source code, 就是希望大家將喜愛內容,刪去無謂垃圾,在流動裝置上容易觀看。當然,歡迎大家放上 server 中公開,方便網友,但秘而不宣,只供自己享用也無妨。

另外,使用 web fetching 也解決某些地方的網絡封鎖,資訊易於流通。

zozzen 2007-11-28 13:09
講開 bandwidth 問題,
想請教一下
$requesturl 時, 佢會將人地整個 page load 入黎, 還是只係閱讀裡面既 source code , 搵出行數呢?

如果連 image 都load 埋, 咁咪好大loading.

maninnet 2007-11-28 13:31
現時的 fetch 只是將 html source code 全部 load 入. 圖, 是用回原網站的圖. 如果將全部圖片, 用 php 讀取, 再轉至用戶的電腦, bandwidth 會好大.
但亦有弊端, 舉個例子, 在香港或其他地方掛上明報, 由於大陸網關封了明報, 大陸的網友會看不到圖片.

zozzen 2007-11-28 23:47
明白明白.

其實有沒有方法每天只 fetch 一次呢?

以full.mingpaonews.com 為例, 每天只是更新一次, 似乎冇需要每click 一下就 fetch 一次.
如果早上 六七點自動 cache 起所有 php result, 咁咪減少好多 loading 問題.

zozzen 2007-11-29 01:46
諗諗下, 好似幾複雜下.

要儲存 $variables 可能要用 sql (未學到添....)

要設定 fetching 的時間更麻煩.
例如 set 個 if else condition. 如果時間 > 7am-8:00am , 就唔 fetch data之類, 但好難預測自己幾時先click 到某一篇新聞, 萬一過左時間, 咁就唔符合 condition.

唔知server 可唔可以 set 一個 schedule, 自動在某一時間執行 fetching 之類呢.

maninnet 2007-11-29 05:56
php 版是即時從對方網頁上偷取內容. 曾經有網友 email 給我, 說這個方法, 會耗 server 資源, 應先下載, 再檢查需要 update 與否.

這種方法, 對方不容易發覺, 因為每天只 fetch 一次.

這樣做, 未必需使用 sql, 可參閱本網所提供的 perl 版. 基本上與 php 版同步發行, 當然, 由於複雜, 沒有多少人參與, 只有幾份報紙及雜誌, 使用 perl 的原因, 是將網頁內容下載, 比使用 php 更方便. 亦有腦友將用 perl 版下載回來, 再提供內容給予各方好友使用. 如:

http://news.itoncc.com/East/

如需每日定時下載, windows 可用內置的 schedule, linux 可用 cron

zozzen 2007-11-29 11:57
請問 perl 版是否只要放到 server , 再執行 cron , 就可以自動 load 報紙架 ?

maninnet 2007-11-29 13:02
cron 是 unix/linux 開機執行的背景 schedule task.

perl 版只是將報紙下載, 假設 server 跟 pc 是分開, 可以下載在 pc 中, 再用 ftp upload 上 server.

假如在 server 執行 perl 版, 可修改儲存位置, 放在相關的目錄中.

zozzen 2007-11-30 15:55
多謝晒. 我慢慢一步步學下先, 希望第日會有d 貢獻~~~~

zoooooo1 2008-11-03 01:18
好正wo~~~~~~~~

scng71 2008-11-22 05:11
這是一個很好的範例

theone 2009-01-16 18:41
台灣的樂透彩也可以吧?

simonweb 2009-07-18 18:28
好似幾複雜


查看完整版本: [-- 從簡單開始--六合彩 --] [-- top --]


Powered by PHPWind v4.0.1 Code © 2003-05 PHPWind
Gzip enabled

You can contact us