嘿,我正在尝试抓取网站上的特定内容,就像这样
<td><a href="javascript:void(0)" class="rankRow"
data-rankkey="25">
Averages
</a>
</td>
<td class="page_speed_602217763">
82.84 </td>
</tr>
我试图获取数字 82,84,其中 page_speed_** 数字变化,并且与源列表的其余部分不同的常量是文本“平均值”
我尝试过使用 preg_match_all 但似乎无法搜索超过一行以及中间的任何内容。
我使用的代码如下
<?php
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $Player1Link);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$curlresult = curl_exec($curl);
preg_match_all('!data-rankkey="25">Averages</a></td><td class="(\d.*)</tr>!', $curlresult, $matches);
print_r($matches);
$P1AvgHigh = $matches[0][3];
echo "<br>";
echo $P1AvgHigh;
curl_close($curl);
?>
提前致谢
首先,您的类声明不完整,并且您错过了第二个 td 的内容...也许这是您的代码的不完整副本?您还需要考虑每个元素之间和内部的空白。
这是我的正则表达式,它看起来可以工作(但可能需要根据您的精确要求和内容中可能的值进行调整)...
data-rankkey="25">[\s]*Averages[\s]*<\/a>[\s]*<\/td>[\s]*<td class="page_speed_([\d]*)">[\s]*([\d]*.[\d]*)[\s]*</td>[\s]*<\/tr>
我已经转义了正斜杠,这对你来说可能不需要。