Ответы пользователя по тегу PHP
  • Как узнать ошибку php curl если curl_error возвращает пустую строку?

    yesworld
    @yesworld
    В интернете на днях нашел. Удачи! ;)
    /**
     * Get a web file (HTML, XHTML, XML, image, etc.) from a URL.  Return an
     * array containing the HTTP server response header fields and content.
     */
    function get_web_page( $url )
    {
        $user_agent='Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';
    
        $options = array(
    
            CURLOPT_CUSTOMREQUEST  =>"GET",        //set request type post or get
            CURLOPT_POST           =>false,        //set to GET
            CURLOPT_USERAGENT      => $user_agent, //set user agent
            CURLOPT_COOKIEFILE     =>"cookie.txt", //set cookie file
            CURLOPT_COOKIEJAR      =>"cookie.txt", //set cookie jar
            CURLOPT_RETURNTRANSFER => true,     // return web page
            CURLOPT_HEADER         => false,    // don't return headers
            CURLOPT_FOLLOWLOCATION => true,     // follow redirects
            CURLOPT_ENCODING       => "",       // handle all encodings
            CURLOPT_AUTOREFERER    => true,     // set referer on redirect
            CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
            CURLOPT_TIMEOUT        => 120,      // timeout on response
            CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
        );
    
        $ch      = curl_init( $url );
        curl_setopt_array( $ch, $options );
        $content = curl_exec( $ch );
        $err     = curl_errno( $ch );
        $errmsg  = curl_error( $ch );
        $header  = curl_getinfo( $ch );
        curl_close( $ch );
    
        $header['errno']   = $err;
        $header['errmsg']  = $errmsg;
        $header['content'] = $content;
        return $header;
    }
    Ответ написан
    Комментировать
  • Каким образом лучше получать данные с сайта?

    yesworld
    @yesworld
    Да, вам нужен Фантом.
    Просто в цикле указываете задержку таймаута, на время загрузки сайта и парсите.
    Вот накидал вам примерный код:
    var webPage = require('webpage');
    var page = webPage.create();
    
    page.open('https://example.ru/', function (status) {
        window.setTimeout( function() {
            var content =  page.content ;
            /* Парсите полученный html код динамического сайта  */
            fs.write("./info.log",'Время: ' + new Date().toLocaleString()+' | Value:'+ content +'\n' , 'a');
         
            phantom.exit();
        }, 10000);
    });
    Ответ написан
    Комментировать