Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][parsel] Pobranie treści strony
kociupk
post 21.03.2018, 09:21:02
Post #1





Grupa: Zarejestrowani
Postów: 97
Pomógł: 1
Dołączył: 29.03.2006

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
aras785
post 21.03.2018, 09:52:40
Post #2





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

Ostrzeżenie: (0%)
-----


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>';


Ten post edytował aras785 21.03.2018, 09:53:10
Go to the top of the page
+Quote Post
EnterV
post 21.03.2018, 10:20:07
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 19.03.2018

Ostrzeżenie: (0%)
-----


  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

Ten post edytował EnterV 21.03.2018, 10:23:16
Go to the top of the page
+Quote Post
kociupk
post 21.03.2018, 11:00:42
Post #4





Grupa: Zarejestrowani
Postów: 97
Pomógł: 1
Dołączył: 29.03.2006

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
aras785
post 21.03.2018, 11:06:26
Post #5





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

Ostrzeżenie: (0%)
-----


u mnie wszystko działa smile.gif

https://imgur.com/a/baeZe
Go to the top of the page
+Quote Post
kociupk
post 21.03.2018, 11:36:29
Post #6





Grupa: Zarejestrowani
Postów: 97
Pomógł: 1
Dołączył: 29.03.2006

Ostrzeżenie: (0%)
-----


Faktycznie działa ale nie na każdym serwerze. Dzięki
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 13:54