Вопрос по php, simple-html-dom, curl – str_get_html не загружает допустимую строку html

8

Я получаю строку HTML, используя curl:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html_string = curl_exec($ch);

Когда яecho это я вижу совершенно хороший HTML, как мне нужно для моих нужд анализа. Но, при попытке отправить эту строкуHTML DOM PARSER методstr_get_html($html_string), Это не будет загружать его (возвращает false из вызова метода).

Я попытался сохранить его в файл и открыть сfile_get_html на файл, но происходит то же самое.

Что может быть причиной этого? Как я уже сказал, HTML выглядит прекрасно, когда я повторяю его.

Большое спасибо.

Сам код:

$html = file_get_html("http://www.bgu.co.il/tremp.aspx");
$v = $html->find('input[id=__VIEWSTATE]');
$viewState = $v[0]->attr['value'];
$e = $html->find('input=[id=__EVENTVALIDATION]');
$event = $e[0]->attr['value'];

$html->clear(); 
unset($html);

$body = " A_STRING_THAT_CONTAINS_SOME_DATA " 

$ch = curl_init("http://www.bgu.co.il/tremp.aspx");
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$html_string = curl_exec($ch);

$file_handle = fopen("file.txt", "w");
fwrite($file_handle, $html_string);
fclose($file_handle);

curl_close($ch);

$html = str_get_html($html_string);
Он отлично работает для меня. pguardiario
Если вы разместите свой код, мы, вероятно, можем помочь. cryptic ツ

Ваш Ответ

3   ответа
28

И я анализирую строку (файл) размером с вашу ссылку и сталкиваюсь с этой проблемой.

После того, как я увидел исходный код, я обнаружил проблему. Меня устраивает !



Я обнаружил, что simple_html_dom.php имеет ограничение на размер, который вы читаете.

// get html dom from string
  function str_get_html($str, $lowercase=true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_B     R_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)
  {
           $dom = new simple_html_dom(null, $lowercase, $forceTagsClosed, $target_charset, $stripRN, $defaultBRText, $defaultSpanText);
           if (empty($str) || strlen($str) > MAX_FILE_SIZE)
           {
                   $dom->clear();
                   return false;
           }
           $dom->load($str, $lowercase, $stripRN);
           return $dom;
  }

Вы должны изменить размер по умолчанию ниже (Это 'в верхней части simple_html_dom.php)

может быть поменять на 100000000? Это'на ваше усмотрение.

define('MAX_FILE_SIZE', 6000000); 
Просто спас меня на часы отладки, спасибо! Niels Sønderbæk
Вы спасатель жизни! Mohammad Mahroz
Удивительно! Я искал часы и думал, что у меня не было выбора! FoxInFlame
Хотелось бы, чтобы я видел это около 4 часов назад! Благодарю. user2029890
0

что вы используете curl + str_get_html вместо простого использования file_get_html с URL-адресом из-за параметров POST, которые необходимо отправить.

Вы можете использовать этот валидатор W3C (http://validator.w3.org/#validate_by_input+with_options) для проверки возвращенного HTML-кода, а затем, если вы уверены, что результатом является 100% -ный действительный HTML-код, вы можете сообщить об ошибке здесь:http://sourceforge.net/p/simplehtmldom/bugs/.

Я использовал валидатор и получил ошибки для возвращенного HTML. Забавно, что когда я беру исходную страницу HTML, над которой я работаю в веб-браузере, и пытаюсь ее проверить, я также получаю ошибки. Так что, к сожалению, это немне не поможет Если возвращенная HTML-страница загружается правильно при отображении, isn 'Т этого должно быть достаточно? Dani
Ну, это означает, что страница, которую вы пытаетесь проанализировать, не является допустимым HTML, какие ошибки, кстати? В любом случае вы можете попытаться сообщить об ошибке в проект PHP HTML DOM-парсера, но если html-код, который вы пытаетесь разобрать, не совсем корректный HTML I 'Я не уверен, что вы это исправите. FerCa
1

не закодирован ли HTML каким-либо образом HTML DOM PARSER?не ожидал? Например. с HTML-сущностями, такими как<html> вместо -это все равно будет отображаться как правильный HTML в вашем браузере, но не будетт разбора.

Я сохранил строку в файл и посмотрел на нее с помощью блокнота. Теги (и весь HTML) выглядит вполне корректно. Dani

Похожие вопросы