Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [inne] Jak wydostać interesujące dane ze strony www?
Rysh
post 21.04.2013, 18:35:50
Post #1





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Witam, potrzebuję pomocy, jak wydostać z kodu HTML interesujące mnie dane. Otóż pobieram stronę www, za pomocą wget, teraz chciałbym obrobić ten pliczek i wydostać z niego opis produktu, aktualną cenę oraz dostępność. Jako, iż produktów jest 13000 ręczne dodawanie odpada. Próbowałem grep'a jednak on jedynie pokazuję mi linijkę w której jest dany wyraz. Początek jest, jednak teraz potrzebuję pomocy, co dalej jakich narzędzi? Chciałbym do tego nie mieszać PHP i zrobić to za pomocą samego BASH'a. Nigdy wcześniej nie używałem wyrażeń regularnych, a jak już to tylko przykładów z internetu.

  1. <span class='pogr'>Producent: xyz</span><hr/><br /><span class='pogr'>Dostępność:</span><br /><div><img src='http://strona.xyz/stan0.png'></div><hr/><br/><span class='pogr'>Cena (szt.) : </span> 10.46 PLN<hr /><hr /><div>(ABC0001) Nazwa produktu</div>


PS. Mam nadzieję, że nikt mnie nie wygodni z forum za taki temat na takim forum smile.gif

Pozdrawiam.


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Helid
post 21.04.2013, 19:14:32
Post #2





Grupa: Zarejestrowani
Postów: 280
Pomógł: 20
Dołączył: 12.12.2007
Skąd: 127.0.0.1

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


  1. <?php
  2. $date = "<span class='pogr'>Producent: xyz</span><hr/><br /><span class='pogr'>Dostępność:</span><br /><div><img src='http://strona.xyz/stan0.png'></div><hr/><br/><span class='pogr'>Cena (szt.) : </span> 10.46 PLN<hr /><hr /><div>(ABC0001) Nazwa produktu</div>";
  3.  
  4. if(preg_match("/<span class='pogr'>Producent: (.*)<\/span>/", $date, $found))
  5. {
  6. print_r($found);
  7. }


Coś na wzór tego.

Ten post edytował Helid 21.04.2013, 19:15:27


--------------------
Go to the top of the page
+Quote Post
PrinceOfPersia
post 21.04.2013, 20:43:40
Post #3





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

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


w czystym Bashu pewnie można by użyć awk, taka ni to komenda, ni język. Nie wiem jak działa, ale kiedyś za pomocą googla coś mi się udało zrobić w tym więc chyba nie jest trudne.

Albo w PHP, za pomocą klasy DomDocument:
  1. $document = new DomDocument();
  2. $document->loadHTML(file_get_contents("TUTAJ_NAZWA_PLIKU.html"));
  3. $elements = $document->getElementsByTagName('*');
  4. $lista = array();
  5. foreach ($elements as $el) {
  6. $class = $el->getAttribute('class');
  7. $tag = $el->tagName;
  8. $content = $el->textContent;
  9. $lista[] = array('class' => $class, 'tag'=>$tag, 'content'=> $content);
  10. }
  11.  


a potem w zmiennej $lista masz już ładnie ułożoną tablicę sparsowanych danych. Możesz je np. wylistować i dalej coś z nimi robić, np.:

  1. echo "<ol>";
  2. foreach ($lista as $row) {
  3. if ($row['class']=='pogr')
  4. echo "<li style='color:red'>";
  5. else echo "<li>";
  6. echo "Tag:" . $row['tag'] . ", klasa: " . $row['class'];
  7. echo " Tresc: <em>" . $row['content'] . "</em>";
  8. echo "</li>";
  9. }
  10. echo "</ol>";




--------------------
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: 14.08.2025 - 05:46