Парсер одной строки на сайте, как сделать?

NOIP

Гуру форума
Регистрация
17 Фев 2008
Сообщения
327
Реакции
77
Всем привет, есть код
HTML:
<div class="col-md-4">
                                        <div class="form-group" style="display: none">
                                            <label for="server_id" style="display: none"></label>
                                            <select id="server_id" class="form-control"><option value="0">Name#1</option></select>
                                        </div>
                                        <div class="form-group">
                                            <div class="input-group">
                                                <span class="input-group-btn">
                                                    <button type="button" class="btn btn-white btn-copy" data-clipboard-target="#server_connect">
                                                        <i class="fa fa-copy"></i>
                                                    </button>
                                                </span>
                                                <input type="text" id="server_connect" class="form-control readonly" onclick="this.select()" placeholder="Получение данных..." readonly="">
                                                <span class="input-group-btn">
                                                    <a id="server_auto_connect" class="btn btn-white" type="button" href="185">
                                                        <i class="fa fa-arrow-right"></i>
                                                    </a>
                                                </span>
                                            </div>
                                        </div>
                                        <div class="progress progress-striped m-b-none active">
                                            <div id="server_progress" class="progress-bar" style="width: 5%;"></div>
                                        </div>
                                        <small id="server_players">5 игроков в сети</small>
                                    </div>
Нужно содержимое
HTML:
<small id="server_players">5 игроков в сети</small>
Как парсить страницу что бы достать содержимое этого участка?
 
если парсить нормальной библиотекой типа DiDOM то echo $document->find('small#server_players')[0]->html();
если регуляркой то Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование:
Подскажите, почему не выводится страница?
PHP:
$html = file_get_html('http://shop.zrustserver.com/');
echo $html;
Я извиняюсь за ссылку на сторонний ресурс но мне нужно парсить данные именно от сюда, но почему то нечего не работает, Google работает а тут нет. что может быть не так?
 
Если в принципе не выводит html то возможно стоит защита от ботов. Когда ты примитивно подключаешься то не передается юзер агент или куки не поддерживаются. Учи как работать с курлом и подстраивай признаки обычного пользователя.
 
Я уже кучу вариантов перепробовал, нечего не помогает.
 
Я уже кучу вариантов перепробовал, нечего не помогает.
а курлом нельзя?
PHP:
function get_web_page( $url )
{
  $uagent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8";
  $ch = curl_init( $url );

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_REFERER,"http://google.com");
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 10);
  curl_setopt($ch, CURLOPT_ENCODING, "");
  curl_setopt($ch, CURLOPT_USERAGENT, $uagent);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
  curl_setopt($ch, CURLOPT_TIMEOUT, 120);
  curl_setopt($ch, CURLOPT_MAXREDIRS, 10);

  $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;
}
$result = get_web_page('http://shop.zrustserver.com/');
$content = $result['content'];
preg_match('/var storeConfig = (.*})/',$content,$match);
$cont_arr = json_decode($match[1], true);
var_dump($cont_arr);
 
а курлом нельзя?
PHP:
function get_web_page( $url )
{
  $uagent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8";
  $ch = curl_init( $url );

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_REFERER,"http://google.com");
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 10);
  curl_setopt($ch, CURLOPT_ENCODING, "");
  curl_setopt($ch, CURLOPT_USERAGENT, $uagent);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
  curl_setopt($ch, CURLOPT_TIMEOUT, 120);
  curl_setopt($ch, CURLOPT_MAXREDIRS, 10);

  $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;
}
$result = get_web_page('http://shop.zrustserver.com/');
$content = $result['content'];
preg_match('/var storeConfig = (.*})/',$content,$match);
$cont_arr = json_decode($match[1], true);
var_dump($cont_arr);
ради интереса проверил, код работает
Скрытое содержимое доступно для зарегистрированных пользователей!
 
пытаюсь вытащить после с онлайном
PHP:
preg_match('/<div class=\"col-md-4\">(.+?)<\/div>/i',$content,$match);
NULL выходит, что не так?
 
пытаюсь вытащить после с онлайном
PHP:
preg_match('/<div class=\"col-md-4\">(.+?)<\/div>/i',$content,$match);
NULL выходит, что не так?
выше рабочий код просто надо разобрать массив и получите количество игроков онлайн на любом из 5 серверов
а в исходном коде всеравно ничего нет
HTML:
<small id="server_players">Получение данных...</small>

данные подгружаются через javascript

ну а если все еще хотите спарсить этот кусок кода то регулярка такая примерно будет
PHP:
preg_match('/<div class=\"col-md-4\">(.*?)<\/small>/si',$content,$match);
 
Последнее редактирование:
Не работает, возвращает NULL я пробовал вот так
PHP:
preg_match('/<small id=\"server_players\">(.*?)<\/small>/si',$content,$match);
но тоже не заработало..
 
Назад
Сверху