Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [PHP][HTML] Wczytywanie tylko diva z innej strony

Napisany przez: Niepokonany13 26.05.2018, 20:37:50

Witam
Mam problem ponieważ chce wyświetlić tylko 1 diva ze strony dajmy na to że to ceneo
Pobieram sobie stronę

  1. $url = "https://www.ceneo.pl/;szukaj-" . $_GET['sf'];
  2. $zawartosc = http://www.php.net/file_get_contents($url);

I teraz mam problem z wyświetleniem 1 diva ze strony
Chce wyświetlić wszystko w środku diva
  1. <http://december.com/html/4/element/div.html class="page-tab-content products">
  2. ...
  3. </http://december.com/html/4/element/div.html>

Teraz pytanie jak to zrobić potrzebuje najlepiej kawałka kodu bo mam mało czasu na dokończenie tego

Napisany przez: SmokAnalog 27.05.2018, 11:31:20

Ściągnij sobie https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/phpquery/phpQuery-0.9.5.386-onefile.zip i po rozpakowaniu zrób tak:

  1. require 'phpQuery-onefile.php';
  2.  
  3. $html = http://www.php.net/file_get_contents('https://www.ceneo.pl/' . http://www.php.net/urlencode(';szukaj-' . $_GET['sf']));
  4.  
  5. $productsHTML = phpQuery::newDocument($html)['.page-tab-content']->html();


Uważaj, bo z jakiegoś powodu Ceneo czasem wypluwa jakąś ogólną stronę zamiast wyników wyszukiwania, więc jak nie widzisz produktów, to spróbuj jeszcze raz za chwilę.

Napisany przez: Niepokonany13 27.05.2018, 12:52:29

Nic w ogóle nie wyświetla

  1. require 'phpQuery-onefile.php';
  2.  
  3. $html = http://www.php.net/file_get_contents('https://www.ceneo.pl/' . http://www.php.net/urlencode(';szukaj-' . $_GET['sf']));
  4.  
  5. $productsHTML = phpQuery::newDocument($html)['.page-tab-content products']->html();
  6. http://www.php.net/echo $productsHTML;

Napisany przez: SmokAnalog 27.05.2018, 13:04:02

Bo ma być tak jak zrobiłem, czyli ".page-tab-content", a nie ".page-tab-content products". Twój selektor szuka elementów <products> wewnątrz elementów o klasie "page-tab-content", a nie o to Ci chodziło. Poszperałem w drzewie Ceneo i wystarczy, że oprzesz się o klasę "page-tab-content". Klasa "products" ma dwa elementy o zupełnie innym zastosowaniu, więc nie pasuje. Ewentualnie ".page-tab-content.products", czyli szukanie elementu o dwóch klasach naraz.

Napisany przez: Niepokonany13 27.05.2018, 13:07:51

Też nie działa

  1. require 'phpQuery-onefile.php';
  2.  
  3. $html = http://www.php.net/file_get_contents('https://www.ceneo.pl/' . http://www.php.net/urlencode(';szukaj-' . $_GET['sf']));
  4.  
  5. $productsHTML = phpQuery::newDocument($html)['.page-tab-content']->html();
  6. http://www.php.net/echo $productsHTML;

Napisany przez: SmokAnalog 27.05.2018, 13:30:53

U mnie też teraz Ceneo nie zwraca listy produktów. Wcześniej próbowałem zrobić tak jak ktoś w tym pytaniu zasugerował: https://stackoverflow.com/questions/1975461/how-to-get-file-get-contents-to-work-with-https#answer-38720392

Ale też czasami mi nie zwracało produktów. Być może trzeba pokombinować z nagłówkami HTTP, żeby Ceneo zawsze podawało wyniki wyszukiwania.

Tutaj dowód, że ten kod czasami działa:


Napisany przez: Niepokonany13 27.05.2018, 16:39:07

Dzięki za pomoc

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)