想從http://www.atpworldtour.com/Rankings/Singles.aspxPHP外部頁面
搶的球員名單沒有與"bioTableAlt"
類的表,我們必須抓住所有的後<tr>
第一個(類"bioTableHead"
),它是用於表的標題。
通緝的內容是這樣的:
<tr class="oddRow">
<td>2</td>
<td>
<a href="/Tennis/Players/Top-Players/Novak-Djokovic.aspx">Djokovic, Novak</a>
(SRB)
</td>
<td>
<a href="/Tennis/Players/Top-Players/Novak-Djokovic.aspx?t=rb">6,905</a>
</td>
<td>0</td>
<td>
<a href="/Tennis/Players/Top-Players/Novak-Djokovic.aspx?t=pa&m=s">21</a>
</td>
</tr>
<tr>
<td>3</td>
<td>
<a href="/Tennis/Players/Top-Players/Roger-Federer.aspx">Federer, Roger</a>
(SUI)
</td>
<td>
<a href="/Tennis/Players/Top-Players/Roger-Federer.aspx?t=rb">6,795</a>
</td>
<td>0</td>
<td>
<a href="/Tennis/Players/Top-Players/Roger-Federer.aspx?t=pa&m=s">21</a>
</td>
</tr>
我認爲最好的辦法是建立一個array()
,使每個<tr>
的唯一行,並拋出最後的代碼到list.txt
文件,如:
Array (
[2] => stdClass Object (
[name] => Djokovic, Novak
[country] => SRB
[rank] => 6,905
)
[3] => stdClass Object (
[name] => Federer, Roger
[country] => SUI
[rank] => 6,795
)
)
我們正在解析每個<tr>
:
[2]
是從第一<td>
[name]
一個數字是內部第二<td>
[country]
鏈接的文本在第二<td>
[rank]
(...)之間的值是第三<td>
內的鏈接的文本
在最終文件list.txt
應該包含一個array()
約100 IDS(我們抓住了前100名球員的網頁)。
此外,將是驚人的,如果我們將其添加到之前爲每個[name]
一個小補丁的array()
- 「費德勒,羅傑」應轉換爲「費德勒」(正好趕上逗號之前的字,把它扔到線的盡頭)。
謝謝。
可能的重複[如何從正則表達式獲取字符串?](http://stackoverflow.com/questions/3298293/how-to-get-string-from-html-with-regex)和[reqular表達式問題在PHP](http://stackoverflow.com/questions/3382244/reqular-expression-problem-in-php/3382359#3382359)和[一對夫婦](http://stackoverflow.com/search?q= html + dom + php) - 注意這不是建議你應該使用Regex,而是建議的DOM解決方案。 – Gordon 2010-08-09 13:38:12
@戈登 - 這個話題非常不同 – James 2010-08-09 13:39:36
不,它沒有什麼不同。您正在詢問如何從網頁獲取特定節點或節點集。這是通過DOM解析器和XPath完成的,上面的三個鏈接中有很多示例。他們唯一不會告訴你的是如何應用你所要求的名稱修復。 – Gordon 2010-08-09 13:42:02