Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]PHP Simple HTML DOM Parser - parsowanie html
smiesznylolek
post 22.03.2012, 11:19:08
Post #1





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 27.12.2011

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


mam taki problem chcę pobrać z gumtree z ogłoszeń dane samochodów. Nigdy nie bawiłem się żadnym parserem. Używam PHP Simple HTML DOM Parser, mam taki fragment kodu

  1. <?php
  2.  
  3. include 'simple_html_dom.php';
  4.  
  5. $html = file_get_html('http://krakow.gumtree.pl/c-Samochody-Sprzedam-samochody-osobowe-VOLVO-V50-xsenon-W0QQAdIdZ365180663');
  6. foreach($html->find('td.first_col') as $key => $element)
  7. {
  8. echo $element."<br>";
  9. if($key==7) break;
  10. }

I jak odpalę skrypt to
pojawia mi się tylk to:
Cena
Adres
Na sprzedaĹź przez
Marka
Model
Rok
Kilometry

a nie pojawiają mi się dane, nie wiem co źle robię, nie mogę wyciągnąć tych danych które są w samych <td></td> jak cena czy rok itp...

tutaj fragment kodu źródłowego z gumtree który chę sparsować
  1. <tr>
  2. <td nowrap valign=top class="first_col " >Marka
  3. </td>
  4. <td > <a href='http://krakow.gumtree.pl/f-Samochody-Sprzedam-samochody-osobowe-Volvo-W0QQAQ5fCarMakeZvolvoQQCatIdZ9026' class='mmlink'>Volvo</a> </td>
  5. </tr>
  6. <tr>
  7. <td nowrap valign=top class="first_col " >Model
  8. </td>
  9. <td > <a href='http://krakow.gumtree.pl/f-Samochody-Sprzedam-samochody-osobowe-Volvo-V50-W0QQAQ5fCarMakeZvolvoQQAQ5fCarModelZv50QQCatIdZ9026' class='mmlink'>V50</a> </td>
  10. </tr>
  11. <tr>
  12. <td nowrap valign=top class="first_col " >Rok
  13. </td>
  14. <td > 2004 </td>
  15. </tr>
  16. <tr>
  17. <td nowrap valign=top class="first_col " >Kilometry
  18. </td>
  19. <td > 152000 </td>
  20. </tr>


Go to the top of the page
+Quote Post
maviozo
post 22.03.2012, 11:48:05
Post #2





Grupa: Zarejestrowani
Postów: 197
Pomógł: 24
Dołączył: 22.11.2010

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


Logiczne, że pobiera tylko pierwszą kolumnę, przecież podałeś wyraźnie selektor "td.first_col". Powinieneś szukać bardziej w stylu "tr td + td"
Go to the top of the page
+Quote Post
smiesznylolek
post 22.03.2012, 12:03:00
Post #3





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 27.12.2011

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


Cytat(maviozo @ 22.03.2012, 11:48:05 ) *
Logiczne, że pobiera tylko pierwszą kolumnę, przecież podałeś wyraźnie selektor "td.first_col". Powinieneś szukać bardziej w stylu "tr td + td"

Ale właśnie o to chodzi że nie wiem za bardzo w jaki sposób mogę to zrobić...
Go to the top of the page
+Quote Post
maviozo
post 22.03.2012, 15:01:52
Post #4





Grupa: Zarejestrowani
Postów: 197
Pomógł: 24
Dołączył: 22.11.2010

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


Może warto poczytać pomoc odnośnie biblioteki którą dołączasz, ewentualnie o selektorach css? Poza tym, wypróbowałeś chociaż moje rozwiązanie? Można sporóbować jeszcze użycie tyldy, bądź wyszukiwanie wyłącznie danej tabeli i wierszy, a już w pętli odnaleźć drugą komórkę wiersza...
Go to the top of the page
+Quote Post
smiesznylolek
post 22.03.2012, 17:01:01
Post #5





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 27.12.2011

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


tak jak pisałeś nie działało, ale już sobie poradziłem. Tworzy mi sie tabela z danymi które mnie interesują. Tylko teraz zastanawiam się jak rozwiązać problem z wrzuceniem tego co sparsowałem do bazy danych...
to mój kod:
  1. <?php
  2. include_once('simple_html_dom.php');
  3.  
  4. function scraping_IMDB($url) {
  5.  
  6. $html = file_get_html($url);
  7.  
  8. $ret['Title'] = $html->find('title', 0)->plaintext;
  9. $ret['Cena'] = $html->find('tr td', 51)->plaintext;
  10. $ret['Marka'] = $html->find('tr td', 57)->innertext;
  11. $ret['Model'] = $html->find('tr td', 59)->innertext;
  12. $ret['Rok'] = $html->find('tr td', 61)->plaintext;
  13. $ret['Przebieg'] = $html->find('tr td', 63)->plaintext;
  14. $ret['Skrzynia'] = $html->find('tr td', 69)->plaintext;
  15. $ret['Data dodania'] = $html->find('tr td', 49)->plaintext;
  16.  
  17.  
  18. $html->clear();
  19. unset($html);
  20.  
  21. return $ret;
  22. }
  23. // -----------------------------------------------------------------------------
  24. $ret = scraping_IMDB('http://krakow.gumtree.pl/c-Samochody-Sprzedam-samochody-osobowe-VOLVO-V50-xsenon-W0QQAdIdZ365180663');
  25.  
  26. echo "<table>" ;
  27. echo "<tr><td>opis</td> <td>dane</td></tr>";
  28. foreach($ret as $k=>$v)
  29.  
  30.  
  31. echo "<tr><td> $k </td><td> $v </td><tr>";
  32. "</table>"
  33. ?>
  34.  


wynikiem tego jest coś mniej więcej takiego:

  1. opis dane
  2. Title VOLVO V50 xsenon - Samochody Osobowe Auto Moto Sprzedam- Gumtree Małopolskie / Kraków
  3. Cena 25 900,00
  4. Marka Volvo
  5. Model V50
  6. Rok 2004
  7. Przebieg 152000
  8. Skrzynia Manualna
  9. Data dodania 22/03/2012


Ten post edytował smiesznylolek 22.03.2012, 17:04:24
Go to the top of the page
+Quote Post
-zaciakawion-
post 14.09.2012, 22:32:13
Post #6





Goście







Notabene: A regulamin gumtree nic przeciw takim praktykom nie ma??
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.06.2025 - 22:01