DOM PARSING - Как сделать парсинг html в таком файле - PullRequest
0 голосов
/ 02 марта 2019

Я хочу извлечь из домена текст файла, полученного с внешнего сервера с запросом скручивания.Я поместил запрос в переменную $ html_response.

Я начал с

$dom = new DOMDocument;
$dom->loadHTML($html_response);

Но как извлечь текст в конце этого файла?(прокрутите вниз, чтобы показать)

<html>
<head>
  <title></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>

<body>
<font style="text-decoration:none; font-family: Arial; font-size: 40px; color: #b4b4b4; eight: 35px;">HI</font>
<div class="toolbar">
</div>
<style type="text/css">
body,
td,
th {
  color: #000000;
}
body {
  background-color: #eeeeee;
}
</style>
<meta name="viewport" content="width=device-width">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<form method="post" action="">
<p><b>YES YOU CAN</b>
  <input type="text" size="12" maxlength="14" name="named" value="">
  <input type="submit" value="a" name="submit"><br>
</p>
<p><span class="center"><b>PT1</b></span></p>
<p><span class="center"><b>PT2</b> <br>
  <b>XXXXXXXX bold</b> other words!</span></p>
</form><br> other words
<font size="5" face="monospace" color="Black">other words</font>
<br><br>


CANT' TAKE THIS PART BECOUSE THERE ISN'T A TAG THAT CLOSE THIS TEXT
AND I'M WORKING ON A EXTERNAL WEBSITE


</body>
</html>

Спасибо!

1 Ответ

0 голосов
/ 03 марта 2019

Решение подразумевает немного догадок, поскольку на уровне тела есть несколько текстовых узлов

$dom = new DOMDocument;
$dom->loadHTML($html_response);

// retrieve text node at 'body' level with XPath
$xpath = new DOMXpath($dom);
$textNodes = $xpath->query('/html/body/child::text()');

// filter the nodes' content to retrieve the most pertinent ones (here, remove empty texts)
$texts = array();
foreach($textNodes as $node)
{
    if( strlen($node->nodeValue) > 0)
        $texts[] = $node->nodeValue ;
}

// get the latest text, as what you need is always at the bottom of the page 
echo end($texts); // CANT' TAKE THIS PART BECOUSE THERE ISN'T A TAG THAT CLOSE THIS TEXT AND I'M WORKING ON A EXTERNAL WEBSITE 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...