Używam PHP Simple Parser DOM DOM do skrobania niektórych danych z sklepu internetowego (również z XAMPP 1.7.2 z PHP5.3.0), i mam problemy z tagiem <tbody>
. Struktura tabeli jest essentialy (szczegóły nie są aż tak istotne):<tbody> glitch w PHP Prosty parser DOM HTML
<table>
<thead>
<!--text here-->
</thead>
<tbody>
<!--text here-->
</tbody>
</table>
Teraz próbuję dostać się do sekcji <tbody>
za pomocą kodu:
$element = $html->find('tbody',0)->innertext;
nie robi nie wyrzuca żadnych błędów, po prostu nic nie wypisuje, gdy próbuję to powtórzyć. Przetestowałem kod na innych elementach, <thead>
, <table>
, nawet coś takiego jak <span class="price">
i wszystkie działają poprawnie (oczywiście, usunięcie ", 0" nie powiedzie się kodu). Wszystkie podają poprawne sekcje. Outertext ditto. Ale wszystko zawiedzie <tbody>
.
Teraz przejrzałem parser, ale nie jestem pewien, czy mogę to zrozumieć. Zauważyłem, że <thead>
nie jest nawet wspomniane, ale działa dobrze. wzruszając ramionami
Zgaduję, że mógłbym spróbować zrobić nawigację dla dzieci, ale wydaje się, że również usterka. Właśnie próbowałem uciekać:
$el = $html->find('table',0);
$el2 = $el->children(2);
echo $el2->outertext;
i bez kości. Próbowałem zastąpić children
z first_child
i 2 1, a nadal nie kości. Zabawne, ale jeśli spróbuję ->find
zamiast children
, to działa idealnie.
Jestem przekonany, że mogę znaleźć całą pracę, ale to zachowanie wydaje się dość dziwne, aby opublikować tutaj. Mój ciekawy umysł jest szczęśliwy z powodu wszelkiej pomocy, jaką może uzyskać.
FYI: W wersji '1.11' (Rev. 184) kod ten znajduje się w linii' 629'. – h2ooooooo
powinno to być wspomniane w dokumentacji '>: (' –
W wersji 1.5 (wersja 196) kod znajduje się w linii 695 –