DOMCrawler не демпирует данные для разбора

Я использую Symfony, Goutte и DOMCrawler для очистки страницы. К сожалению, на этой странице много старомодных таблиц данных, а также нет идентификаторов или классов или идентифицирующих факторов. Поэтому я пытаюсь найти таблицу, анализируя исходный код, который я возвращаю из запроса, но я не могу получить доступ к какой-либо информации

Я думаю, что когда я пытаюсь отфильтровать его, он только фильтрует первый узел, и это не то место, где мне нужны мои данные, поэтому он ничего не возвращает.

поэтому у меня есть объект $crawler . И я попытался пропустить следующее, чтобы получить то, что хочу:

 $title = $crawler->filterXPath('//td[. = "Title"]/following-sibling::td[1]')->each(funtion (Crawler $node, $i) { return $node->text(); }); 

Я не уверен, что Crawler $node , я просто получил его из примера на веб-странице. Возможно, если я смогу получить эту работу, то она будет проходить через каждый узел объекта $crawler и найти то, что я действительно ищу.

Вот пример страницы:

 <table> <tr> <td>Title</td> <td>The Harsh Face of Mother Nature</td> <td>The Harsh Face of Mother Nature</td> </tr> . . . </table> 

И это всего лишь одна таблица, есть много таблиц и огромный неряшливый беспорядок за пределами этого. Есть идеи?

(Примечание: ранее я смог применить фильтр к объекту $crawler для некоторой необходимой мне информации, затем я serialize() информацию и, наконец, получил строку, что имело смысл. Но я больше не могу получить строку, idk почему.)

Related of "DOMCrawler не демпирует данные для разбора"

Функция html () DomCrawler не сбрасывает весь html в соответствии с описанием функции:

http://api.symfony.com/2.6/Symfony/Component/DomCrawler/Crawler.html#method_html

он возвращает только первый узел, который он сделал в вашем случае.

Вы можете использовать http://php.net/manual/en/domdocument.savehtml.php, поскольку DomCrawler – это набор SplObjectStorage.

 $html = $crawler->getNode(0)->ownerDocument->saveHTML(); 

Если вы просмотрите источник для Crawler :: html (), вы увидите, что он выполняет следующие действия:

 $html = ''; foreach ($this->getNode(0)->childNodes as $child) { $html .= $child->ownerDocument->saveHTML($child); } return $html;