Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][parsel] Pobranie treści strony
Forum PHP.pl > Forum > PHP
kociupk
Potrzebuje pobrać treść strony, która jest wyświetlana za pomocą javascript.

  1. <div id="storelist" style="width: 900px; height: 100%;"></div>
  2. <script type="text/javascript">
  3. document.getElementById("storelist").innerHTML='<table class="dyta" cellspacing="0px" cellpadding="0px"><tr><td>nazwa</td></tr></table>';


Próbuje pobrać dane, które są w tabeli za pomocą file_get_html ale to nie działa. Czy ktoś miał podobny problem i pomoże go rozwiązać?

  1. <?php
  2. $html = new simple_html_dom();
  3. $html->file_get_html('https://strona.pl');
  4.  
  5. foreach($html->find('td') as $data)
  6. {
  7. echo $data->plaintext;
  8. }
  9. ?>
aras785
Sprawa jest dość prosta. Najpierw pobieramy zawartość SCRIPT i następnie zawartość konwertujesz na obiekt i działasz normalnie.

Przykład (użyłem tej biblioteki: http://simplehtmldom.sourceforge.net/)

  1. <?php
  2. include('simple_html_dom.php');
  3. $html = '<div id="storelist" style="width: 900px; height: 100%;"></div>
  4. <script type="text/javascript">
  5. document.getElementById("storelist").innerHTML=\'<table class="dyta" cellspacing="0px" cellpadding="0px"><tr><td>nazwa</td><td>nazwa2</td></tr></table>\';
  6. </script>';
  7.  
  8. //pobieramy caly html
  9. $obj = str_get_html($html);
  10. //wyciagamy wnetrze pierwszego tagu script
  11. $script = $obj->find('script')[0]->innertext;
  12. //pobieramy tylko text/html znajdujacy sie w script, pobrany wyzej
  13. $obj = str_get_html($script);
  14. //wyswietlamy wszystkie td :)
  15. foreach($obj->find('td') as $td) echo $td->plaintext.'<br>';
EnterV
  1. <?php
  2. //Zapisujemy link z którego ma być pobrany HTML
  3. $url = 'http://link.pl';
  4.  
  5. libxml_use_internal_errors(true);
  6. //pobieramy HTML
  7. $resp = file_get_contents($url);
  8. //Tworzymy obiekt DOMDocument
  9. $doc = new DOMDocument();
  10. //Ładujemy HTML do obiektu
  11. $doc->loadHTML($resp);
  12. //A teraz możemy używać HTML jak XML za pomocą $sxml
  13. $sxml = simplexml_import_dom($doc);
  14.  
  15. //Przykład wyświetlenia zawartości tagu title. (Wyświetla zawartość nie tag.)
  16. echo $sxml->head->title;


$sxml używasz jak SimpleXML http://php.net/manual/en/simplexml.examples-basic.php
kociupk
Dzięki za szybką odpowiedz ale dalej mam problem z pobraniem danych na organizmie żywym

  1. <?php
  2. include('simple_html_dom.php');
  3.  
  4. $url = 'https://malodesign.pl/store/';
  5.  
  6. $obj = file_get_html($url);
  7. $script = $obj->find('script')[0]->innertext;
  8. $db = str_get_html($script);
  9. foreach($db->find('td') as $td) echo $td->plaintext.'<br>';
  10.  
  11. ?>
aras785
u mnie wszystko działa smile.gif

https://imgur.com/a/baeZe
kociupk
Faktycznie działa ale nie na każdym serwerze. Dzięki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.