Извлечь код части с внешней страницы - PullRequest
0 голосов
/ 06 октября 2018

Я создаю персональный сайт для аренды на время отпуска (сайт Joomla).Владелец создал здесь объявление: https://www.armor -vacances.com / locat ... tml # calendrier Знаете ли вы, если есть способ извлечь всю часть "календаря" для отображения на моем веб-сайте?сайт?Например, я пытаюсь найти некоторые сценарии с помощью file_get_html, но не достигаю своих целей.Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 06 октября 2018

php может сделать это, если вы не будете вмешиваться в вопросы авторского права сайта или контроля роботов, и что вы можете положиться на сайт, который вы читаете, всегда будет иметь контейнер, который вы ищете, но он не собираетсябыть легким

Было бы хорошо, если бы информация, которую вы просматриваете, содержала информацию в формате, готовом к использованию с использованием метатегов, которые, как она знает, будут искать программы.

Вот отправная точка для некоторого кода очисткидля вас (я кэшировал содержимое страницы в локальный файл, чтобы вы не заходили на сайт слишком часто каждый день):

<?php
// php7.0

$src  ="/11923986/izvlech-kod-chasti-s-vneshnei-stranitsy";
$tmpfn="C:/temp/temp.$srcX.$now.html";

$findDivId="Place your ID here";

$now  = date('Y-m-d', time());
$srcX = preg_replace("/[^a-zA-Z0-9]+/", "", $src);
$srcX = substr($srcX, 0, 155);

if ( file_exists($tmpfn) ) {
    $html=file_get_contents($tmpfn);
}
else {
    $ch = curl_init($src);

    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($ch, CURLOPT_HEADER, true);

    $html = curl_exec($ch);
    if ( !$html ) {
        echo curl_error($ch);
        exit;
    }
    curl_close($ch);

    file_put_contents($tmpfn, $html);
}

echo "<LI>html size = ".strlen($html)." bytes";

if ( strcmp($html, "") != 0 ) {
    $dom = new DOMDocument;
    @$dom->loadHTML($html);

    $divs = $dom->getElementsByTagName("div"); // or ->getElementsById($id);
    if ( $divs ) {
        echo "<UL>";
        foreach ($divs as $div) {
            echo "<LI>Tag::".$div->nodeName;
            if ( $div->hasAttributes() ) {
                foreach ($div->attributes as $attr) {
                    echo "<BR>Attribute::".$attr->nodeName . "=" . $attr->nodeValue . " ";

                    if ( strcmp($attr->nodeName,'id')==0 
                    and  strcmp($attr->nodeValue,$findDivId)==0 ) {
                        echo "<LI>Found $findDivId!!";
                    }

                }
            }
            echo "<BR>Value::".$div->nodeValue."<BR><BR>";
        }
        echo "</UL>";
    }
}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...