【发布时间】:2013-02-25 12:54:36
【问题描述】:
我在 PHP 方面表现不错(远非专家),但在正则表达式和抓取方面却是个纯新手。我想做一些抓取来帮助进行一些研究和教育自己,但我遇到了一个问题。我想从页面的以下部分提取奖品:
<th valign="top"> Prize pool:
</th>
<td> $75,000
</td></tr>
不用说,奖池价值会发生变化。我想获得奖品,并且只获得这部分的奖品(在本例中,脚本应打印出 75,000 美元)。
这是我目前所拥有的:
preg_match('/Prize pool:\n<\/th>\n<td>(.*)/i', $file_string, $prize);
但是,这会打印出来:
Prize pool:
</th>
<td> $75,000
【问题讨论】:
-
虽然@JohnConde 的评论非常正确,但这里更好的答案是您应该使用php.net/domdocument 之类的东西。
-
将
//th[contains(text(), 'Prize pool')]/td放入gist.github.com/1358174 -
如果值总是一个美元符号后跟数字,你能不只搜索美元和后面的任何数字/逗号吗?
-
@gordon,也许你的意思是:
//th[contains(text(), 'Prize pool')]/following-sibling::td?
标签: php regex screen-scraping