【发布时间】:2012-08-06 11:27:35
【问题描述】:
我使用php网页抓取,我想从下面的html代码中获取周日的价格(3.65):
<tr class="odd">
<td >
<b>Sunday</b> Info
<div class="test">test</div>
</td>
<td>
€ 3.65 *
</td>
</tr>
但我没有找到最好的正则表达式来做到这一点...... 我使用这个 php 代码:
<?php
$data = file_get_contents('http://www.test.com/');
preg_match('/<tr class="odd"><td ><b>Sunday</b> Info<div class="test">test<\/div><\/td><td>€ (.*) *<\/td><\/tr>/i', $data, $matches);
$result = $matches[1];
?>
但没有结果... 正则表达式有什么问题? (我认为是因为新的行/空格?)
【问题讨论】:
-
regex on "€ ([0-9.]*) " 来获取价格。如果它是其中之一,你可以先 split() 它。还要注意特殊的正则表达式字符,比如价格后面明显的 *!
-
但我也需要使用“星期日”,因为还有其他日子...
-
/星期日(.*)€ ([0-9.]*)/s 会给我最长的答案,有没有办法得到最短的答案?如果可能的话,那可能会奏效......
-
如果您无权从网站上抓取,请不要这样做。如果您有权限,请索要 XML 格式的价目表提要,该提要专为数据提取而设计。
标签: php regex web-scraping