Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V   1 2 3 >  
Reply to this topicStart new topic
> [PHP]pobranie za pomoca 'getElementsByTagName'
shtoc
post
Post #1





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 18.11.2008
Skąd: Polska

Ostrzeżenie: (10%)
X----


Czy za pomoca takiego wyrazenia :

  1. <?php
  2. $dane = $DOM->getElementsByTagName('user_vid_list');
  3. ?>


dam rade wyciagnac ze strony rzeczy kryjace sie wewnatrz user_vid_list??

ewentualnie jak to wywolac zeby dalo efekt
bo echo $dane; nie dziala

Ten post edytował shtoc 2.12.2008, 13:29:01
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1) Czy $DOM jest prawidlowym obiektem DOM xml, ktorego przeszukujesz?
2) "echo $dane; nie dziala " to ci co najwyzej wyswietli slowo OBJECT.
getElementsByTagName zwraca obiekt DOMNodeList i musisz po nim przeiterowac by dobrac sie do jego elementow
Go to the top of the page
+Quote Post
shtoc
post
Post #3





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 18.11.2008
Skąd: Polska

Ostrzeżenie: (10%)
X----


  1. <?php
  2. foreach ($DOM->getElementsByTagName('meta') as $meta)
  3.        {
  4.            if(strtolower($meta->getAttribute('name'))  == 'description')
  5.            {
  6.                $description = $meta->getAttribute('content');
  7.              
  8.                echo "[ DESC ] $description\n";
  9.                
  10.            }
  11.        }
  12. ?>

Tu mam takie fragmencik kodu ($DOM = new DOMDocument()(IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) i on mi wyciaga ze strony z meta tagów informacje na temat descryption.
A ja potrzebuje wyciagnac informacje z body strony www.
Jak przejsc do :
...
<div id="content">
<div id="user_files">
<div id="user_video" class="zakladka type1">
<div id="user_vid_list">
<ul class="row spis type1">
<li id="user_vid_id_wgzAZMnaN9v">
<div class="file_mini_user">
<div class="thumbnail"> <div class="title"></div> <div class="more"></div> <div class="author"></div> <div class="tags"></div>
zeby wyciagnac informacje na temat tych rzeczy?


Ten post edytował shtoc 2.12.2008, 13:30:09
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




przeciez user_vid_list to ID a nie nazwa znacznika. No patrz troche co piszesz i czego uzywasz

Musisz pobrac wszystkie divy i sprawdzic, ktory ma Twoje ID.
Go to the top of the page
+Quote Post
shtoc
post
Post #5





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 18.11.2008
Skąd: Polska

Ostrzeżenie: (10%)
X----


Cytat(nospor @ 1.12.2008, 14:58:54 ) *
Musisz pobrac wszystkie divy


tzn? za pomoca czego to zrobic??
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




hmmm....no nie wiem......
Zastanawiasz sie choc troche nad funkcjami, ktorych uzywasz?
getElementsByTagName('div')
Go to the top of the page
+Quote Post
shtoc
post
Post #7





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 18.11.2008
Skąd: Polska

Ostrzeżenie: (10%)
X----


Cos takiego??
  1. <?php
  2. foreach ($DOM->getElementsByTagName('div') as $div)
  3.    {
  4.        if(strtolower($div->getAttribute('id'))  == 'wrzuta')
  5.            {
  6.                $wrzuta = $div->getAttribute('wrzuta');
  7.  
  8.                echo $wrzuta;
  9.  
  10.            }
  11.    }
  12. ?>

ale to chyba nie dokonca tak?? :/

z tym ze atrybut to musi byc juz chyba wyrazenie class??

Ten post edytował shtoc 2.12.2008, 13:30:37
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
ale to chyba nie dokonca tak?? :/

A no nie tak, gdyz na poczatku mowiles cos o user_vid_list a teraz dopierasz sie do wrzuta (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Kod ogolnie wyglada ok. Wyswietl sobie bez warunku pobrane divy i zobaczysz co pobrales. Czy takie proste sprawdzenie co sie ma to tez trzeba tlumaczyc?
Go to the top of the page
+Quote Post
shtoc
post
Post #9





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 18.11.2008
Skąd: Polska

Ostrzeżenie: (10%)
X----


zaraz bede dalej kombinowal bo mnie nie bylo!!

ale ogolnie o to chodzi zeby dobrac sie do poszczegolnych filmikow na wrzuta.pl

i tam w kodzie strony tworzy sie takie spore drzewo od poczatku <div id="main"> do <div class="file_mini_user"> w ktorym zawarte sa <div class="title"> itp. i chodzi o wyciagniecie wlasnie informacji z tych div class.

przy probie wywolania pobranego diva

$a=$DOM->getElementsByTagName('div');

echo $a;

dostaje takiego błenda :

Catchable fatal error
: Object of class DOMNodeList could not be converted to string in C:\Program Files\WebServ\httpd\nauka.php on line 16

to moze jeszcze raz bardziej sensownie.
ponizej zaklaczylem screen z kodem strony i chialbym wyciagnac z niej informacje z div class= file_mini_user ( title more author tags)

(IMG:http://fotoo.pl/hosting-zdjec/img/b62af68ea4b9bda96c8d272b27574888/scr.JPG)


i mam cos takiego napisane ale to nie dziala.

CODE
$adres = 'http://www.wrzuta.pl/filmy/najnowsze/';
$url = curl_init($adres);
curl_setopt($url, CURLOPT_USERAGENT, 'holmes/3.10.1 (OnetSzukaj/5.0; +http://szukaj.onet.pl)');
curl_setopt($url, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($url, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($url, CURLOPT_HEADER, 0);
$strona=curl_exec($url);
#curl_close($url);

$DOM = new DOMDocument();
@$DOM->LoadHTML(iconv("ISO-8859-2","UTF-8",$strona));

foreach ($DOM->getElementsByTagName('div') as $div)
{
if(strtolower($div->getAttribute('id')) == 'file_mini_user')
{
$user = $div->getAttribute('title');

echo $user;

}
}
?>



ktos moze mi powiedziec co jest nie tak (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
czy chociaz trop jest dobry??

Ten post edytował shtoc 2.12.2008, 12:56:58
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




przeciez file_mini_user to class a nie id .... normalnie brak slow.... mysl troche chlopie bo normalnie marnujesz swoj i nasz czas...

  1. <?php
  2. foreach ($DOM->getElementsByTagName('div') as $div)
  3. {
  4.    if(strtolower($div->getAttribute('class')) == 'file_mini_user')
  5.    {
  6.  
  7.        foreach ($div->getElementsByTagName('div') as $div2){
  8.            if (strtolower($div2->getAttribute('class')) == 'title')
  9.                echo 'Twoj div to $div2 i rob z nim co chcesz';
  10.        }
  11.    }
  12. }
  13. ?>
Go to the top of the page
+Quote Post
shtoc
post
Post #11





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 18.11.2008
Skąd: Polska

Ostrzeżenie: (10%)
X----


no spoko juz kumam jest tylko jedna sprawa nie mozna wypisac z objektu dom za pomoca echo.
ktos mi powiedzial ze mozna to zrobic za pomoca nodevalue lub nodetext. ale w manualu nie ma takich fujnkcji.
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. <?php
  2. echo $div2->nodeValue;
  3. ?>
Go to the top of the page
+Quote Post
mike
post
Post #13





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(shtoc @ 2.12.2008, 10:02:18 ) *
ale w manualu nie ma takich fujnkcji.
Bo to nie funkcja (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Klasa DOMElement dziedziczy po DOMNode, która posiada publiczne właściwości typu nodeName, nodeValue, nodeType, ...
Go to the top of the page
+Quote Post
shtoc
post
Post #14





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 18.11.2008
Skąd: Polska

Ostrzeżenie: (10%)
X----


ok fajnie smiga z tym ze wyswietlaja mi sie informacje na temat wszystkich 16 filmikow.
i chcialbym to zapakowac w tablice ale nie moge
  1. <?php
  2. foreach ($tablica as $div5)
  3.   {
  4.   echo $div5->nodeValues;
  5.   }
  6. ?>

co jest nie tak??

Ten post edytował shtoc 2.12.2008, 13:31:21
Go to the top of the page
+Quote Post
nospor
post
Post #15





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




przeciez ty tu ni do tablicy nie pakujesz
  1. <?php
  2. $tablica= array();
  3. foreach ($DOM->getElementsByTagName('div') as $div)
  4. {
  5.   if(strtolower($div->getAttribute('class')) == 'file_mini_user')
  6.   {
  7.  
  8.       foreach ($div->getElementsByTagName('div') as $div2){
  9.           if (strtolower($div2->getAttribute('class')) == 'title')
  10.               $tablica[] = $div2->nodeValue;
  11.       }
  12.   }
  13. }
  14. print_r($tablica);
  15. ?>
Go to the top of the page
+Quote Post
shtoc
post
Post #16





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 18.11.2008
Skąd: Polska

Ostrzeżenie: (10%)
X----


to w sumie mam taki kod :

  1. <?php
  2. $adres = 'http://www.wrzuta.pl/filmy/najnowsze/';
  3. $url = curl_init($adres);
  4. curl_setopt($url, CURLOPT_USERAGENT, 'holmes/3.10.1 (OnetSzukaj/5.0; +http://szukaj.onet.pl)');
  5. curl_setopt($url, CURLOPT_RETURNTRANSFER, 1);
  6. curl_setopt($url, CURLOPT_CONNECTTIMEOUT, 5);
  7. curl_setopt($url, CURLOPT_HEADER, 0);
  8. $strona=curl_exec($url);
  9. #curl_close($url);
  10.  
  11. $DOM = new DOMDocument();
  12. @$DOM->LoadHTML(iconv("ISO-8859-2","UTF-8",$strona));
  13.  
  14. $tablica= array();
  15.  
  16. foreach ($DOM->getElementsByTagName('div') as $div)
  17. {
  18.   if(strtolower($div->getAttribute('class')) == 'file_mini_user')
  19.   {
  20.       foreach ($div->getElementsByTagName('div') as $div2)
  21.       {
  22.           if (strtolower($div2->getAttribute('class')) == 'title')
  23.  
  24.             foreach ($div->getElementsByTagName('div') as $div3 )
  25.             {
  26.                 if (strtolower($div3->getAttribute('class')) == 'author')
  27.                      
  28.                       foreach ($div->getElementsByTagName('div') as $div4 )
  29.                       {
  30.                        if (strtolower($div4->getAttribute('class')) == 'more')
  31.                        
  32.                                     foreach ($div->getElementsByTagName('div') as $div5 )
  33.                                     {
  34.                                       if (strtolower($div5->getAttribute('class')) == 'tags')
  35.  
  36.                                      $tablica[] = $div5->nodeValue;
  37.                                        
  38.                                        
  39.                       }
  40.             }
  41.       }
  42. }
  43. }
  44.  
  45. }
  46. #print_r($tablica);
  47. for($i=0;$i<16;$i++)
  48. {
  49. echo 'TAB ['.$i.']'.$tablica[$i].'
  50. ';
  51. }
  52. ?>

ktory mi wyswietla w zaleznosci od podania diva informacje wszystkie o plikach albo odpowiednie.

a czy jest mozliwosc po urzyciu diva ktory wyswietla tytulrozmiarczasautoraslowakluczowe jako jeden rekord wyciagnac z niego poszczegolne informacje??
czy trzeba to robic tak jak mowilem za pomoca zmiany diva??

Ten post edytował shtoc 2.12.2008, 13:31:45
Go to the top of the page
+Quote Post
mike
post
Post #17





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Proszę poprawić wszystkie swoje posty i umieścić kody źródłowe w odpowiednich znacznikach bbCode!
Go to the top of the page
+Quote Post
nospor
post
Post #18





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Zacznij uzywac wkoncu BBCODE!!

  1. <?php
  2. $tablica = array();
  3. $i = 0;
  4. foreach ($DOM->getElementsByTagName('div') as $div)
  5. {
  6.    if(strtolower($div->getAttribute('class')) == 'file_mini_user')
  7.    {
  8.  
  9.        $tablica[$i] = array();
  10.        foreach ($div->getElementsByTagName('div') as $div2){
  11.            $class = strtolower($div2->getAttribute('class'));
  12.            if (!empty($class))
  13.                $tablica[$i][$class] = $div2->nodeValue;
  14.        }
  15.        $i++;
  16.    }
  17. }
  18. print_r($tablica);
  19. ?>

Włóż to troche myslenia (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
shtoc
post
Post #19





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 18.11.2008
Skąd: Polska

Ostrzeżenie: (10%)
X----


z tym ze nie dokonca wiem jak tego urzyc?? ;p

wstaw : CODEBOX?? to nie dokonca wyglada tak jak Twoje.

jest jeszcze taki przycisk PHP ale nie dziala albo nie wiem jak go do konca uzyc??
sry za to!!
Go to the top of the page
+Quote Post
mike
post
Post #20





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(shtoc @ 2.12.2008, 12:58:42 ) *
z tym ze nie dokonca wiem jak tego urzyc?? ;p
To jak się dowiesz to otworzę wątek.

Otwieram.

P.S.
Jakby co to w tryb edycji wchodzi się za pomocą (IMG:http://forum.php.pl/style_images/1/p_edit.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 16.09.2025 - 05:44