我想從網站上刮取17個值。從網頁刮取數字值?
這與數據頁面的網址:http://www.bungie.net/stats/reach/online.aspx
在頁面的左下方有一個標題爲「ONLINE PLAYLIST」 我想湊在各列表項的玩家數量無序列表包含這些信息。該號碼只需要數字即沒有逗號。
我想從網站上刮取17個值。從網頁刮取數字值?
這與數據頁面的網址:http://www.bungie.net/stats/reach/online.aspx
在頁面的左下方有一個標題爲「ONLINE PLAYLIST」 我想湊在各列表項的玩家數量無序列表包含這些信息。該號碼只需要數字即沒有逗號。
$c = curl_init();
curl_setopt_array($c, array(
CURLOPT_URL => 'http://www.bungie.net/stats/reach/online.aspx',
CURLOPT_RETURNTRANSFER => true,
));
$r = curl_exec($c);
curl_close($c);
preg_match_all('|([^<>]+)</a> </h4>\s*([0-9,]+) Players|s', $r, $m);
$teams = array_combine($m[1], $m[2]);
foreach ($teams as &$v) $v = str_replace(',','',$v);
echo '<pre>'.print_r($teams,1).'</pre>';
輸出的時刻:
Array
(
[NOBLE MAP PACK] => 997
[RUMBLE PIT] => 4117
[LIVING DEAD] => 6638
[TEAM SLAYER] => 7730
[MLG] => 586
[TEAM SWAT] => 6358
[TEAM SNIPERS] => 2145
[TEAM OBJECTIVE] => 758
[MULTI TEAM] => 1707
[BIG TEAM BATTLE] => 5706
[INVASION] => 2881
[FIREFIGHT] => 2780
[SCORE ATTACK] => 1121
[CO-OP CAMPAIGN] => 695
[TEAM ARENA] => 393
[DOUBLES ARENA] => 680
[FFA ARENA] => 120
)
編輯:固定名稱捕獲組,使 「CO-OP」 將被拍攝的,而不是僅僅 「OP」。
是的,非常感謝你有什麼方法可以每隔15分鐘運行一次這個腳本而不使用瀏覽器? – AndrewFerrara 2011-02-05 07:30:55
在我看來,這裏有一點正則表達式就是你需要的。我最近在PERL中做了這樣的事情,這不是非常棘手,並且在線上有很多有用的線程和教程。
檢查頁面,它看起來像每個列表項目被分配一個名爲「glowBox」的類。我會嘗試獲取頁面的全文/源代碼,然後進行過濾,以便只有以該課程開頭的章節。或者,您可以使用前視或後視來檢查數字是前後還是「」。一旦您縮小了範圍,您需要一個捕獲組來提取數字,以便稍後使用。 PERL,捕獲的字符串會自動分配給變量$ 1,$ 2,$ 3 ...等。如果您只是循環執行正則表達式的無序列表的每一行,則只需要$ 1即可捕獲該數字。捕獲組可能如下所示:(\ d +)
括號使它成爲一個捕獲組,\ d它只會匹配數字字符,而+意味着爲了捕獲任何東西,\ d必須是至少匹配一次,不知道你的要求是什麼,但是如果你需要名字和數字,PERL mak可以很輕鬆地爲頁面查找必要的數據,並將其變爲帶鍵/值對的散列。
絕對檢出http://www.regexr.com,這是一種類似於CSS禪宗花園的正則表達式。您可以將整個頁面源代碼粘貼到其中,並使用正則表達式進行播放,直到找到您想要的內容,並且只顯示您想要的內容。有關正則表達式怪異語法的更多信息和解釋,請啓動here,顯然,請使用google。
編輯:看起來太晚了。
你只想要數字而沒有名字?或者你需要名稱與他們一起去? – 2011-02-05 07:14:51
你卡在哪裏? – miku 2011-02-05 07:15:16