网页抓取 php 具体 div

web scraping php specific div

首先我知道有很多关于这个的话题,但是我没有在其中找到任何解决方案。 我的问题如下,我想使用 "file_get_contents" 2 数据从 div 中具有相同名称的站点中提取 php。 我需要提取数据,然后用 PHP 为每个数据分配一个特定的变量。 无论如何,这里是没有 return 任何东西的代码片段。

$htmlOficial = file_get_contents('https://www.dolarhoy.com/cotizaciondolaroficial');
preg_match('/<tr><td><a href="#">Banco Nacion</a></td><td class="number">(.*)</td>/', 
$htmlOficial, $ventaOficial);
preg_match('/<tr><td><a href="#">Banco Nacion</a></td><td class="number"></td> <td class="number">(.*)</td>
            </tr>/', 
$htmlOficial, $compraOficial);
$ventaOficial = $ventaOficial[1];
$compraOficial = $compraOficial[1];

该站点是 https://www.dolarhoy.com/cotizaciondolaroficial,在 "entities" 框中显示 "Banco Nacion"。我一方面需要提取 "buy" 的数据,另一方面需要提取 "sale" 的数据

测试成功。有时越简单越好。分而治之,使用 explode 和一个函数从其他两个字符串之间的文本中获取一个字符串(在你的情况下,你想要 table 列的内容 "number" class 和关闭列标记 (td)).

$htmlOficial = file_get_contents('https://www.dolarhoy.com/cotizaciondolaroficial');

$chunk = strbtw($htmlOficial, 'Banco Nacion', '</tr>');
$number_chunks = explode('class="number"', $chunk);
$ventaOficial = strbtw($number_chunks[1], '>', '</td>');
$compraOficial = strbtw($number_chunks[2], '>', '</td>');

echo "ventaOficial[{$ventaOficial}]<br/>";
echo "compraOficial[{$compraOficial}]<br/>";

function strbtw($text, $str1, $str2="", $trim=true) {
    $len = strlen($str1);
    $pos_str1 = strpos($text, $str1);
    if ($pos_str1 === false) return "";
    $pos_str1+=$len;

    if (empty($str2)) { // try to search up to the end of line
        $pos_str2 = strpos($text, "\n", $pos_str1);
        if ($pos_str2 === false) $pos_str2 = strpos($text, "\r\n", $pos_str1);
    }
    else $pos_str2 = strpos($text, $str2, $pos_str1);

    if ($pos_str2 !== false) {
        if ($pos_str2-$pos_str1 === 0) $rez = substr($text, $pos_str1);
        else $rez = substr($text, $pos_str1, $pos_str2-$pos_str1);
    }
    else $rez = substr($text, $pos_str1);

    return ($trim) ? trim($rez) : ($rez);
}

如果有效请告诉我。