想从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