Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Parsowanie
Forum PHP.pl > Forum > Przedszkole
zee
Witam....
Wypocilem cos takiego:

  1. <!-- xml version="1.0" encoding="UTF-8" -->
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <script type="text/javascript" src="http://view.binlayer.com/ad-54892.js"></script>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  7.  
  8. <meta http-equiv="refresh" content="9999 url=xxx">
  9.  
  10. </head>
  11. <body>
  12. <?php echo $utf8variable;?>
  13. <body>
  14. <html>
  15. <?php
  16. $url = 'http://panoramafirm.pl/komputery_sprzeda%C5%BC'; //adres strony do przeskanowania jako lancuch znakow
  17. $ch = curl_init();
  18. curl_setopt($ch, CURLOPT_URL,$url); // ustawienie urla
  19. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // zwróć w postaci zmiennej
  20. curl_setopt($ch, CURLOPT_TIMEOUT, 3);
  21. $result = curl_exec($ch); // wykonanie skryptu
  22. curl_close($ch);
  23.  
  24. $nazwa ='@<\/.* class="js-offerName addax addax-cs_hl_hit_company_name_click">(.*?)</a></h3></td>@is';
  25. $telefon ='@<span class="phone">(.*?)</a>@is';
  26. $adres ='@<div class="left js-offerAddress">(.*?)</div> <div class="clear">@is';
  27.  
  28. $ile = preg_match_all($nazwa, $result, $matches, PREG_PATTERN_ORDER);
  29. $ile2 = preg_match_all($telefon, $result, $matches2, PREG_PATTERN_ORDER);
  30. $ile3 = preg_match_all($adres, $result, $matches3, PREG_PATTERN_ORDER);
  31.  
  32. for ($i=0; $i<40; $i++) {
  33. echo ($matches[0][$i]) . '<br>';
  34. echo ($matches2[0][$i]) . '<br>';
  35. echo ($matches3[0][$i]) . '<br>';
  36.  
  37. // print_r ($matches2[0][$i]) . '<br>';
  38. }
  39. ?>


Adres i telefon pobierany jest dobrze ale nazwa juz nie.(albo niemam nic, albo cala strona)
Niemam pojecia jak to prawidlowo zapisac, prosze o pomoc


To czesc kodu z ktorego chce wyciagnac nazwe:
  1. ś</span> </li> </ul></div> </div> <div class="listingStandardLineArea">
  2. <div class="listingStandardLine"></div> </div>
  3. <div class="listingItem searchItem searchItem-newStandardNoOffer" id="itemListing-15" rel="oygnam_fsp">
  4. <div class="fill"> <table class="table"> <tbody> <tr> <td rowspan="3" class="logoArea"> </td>
  5. <td colspan="2" class="nameArea"><h3>
  6. <a href="http://panoramafirm.pl/mazowieckie,wola,warszawa,warszawa,okopowa,47/tremark_sp._z_o.o.-oygnam_fsp.html" class="js-offerName addax addax-cs_hl_hit_company_name_click"> Tremark Sp. z o.o.</a>
  7. <div class="alternateNamesInfo"> <span class="button js-AlternateNamesPopupBtn" rel="15">
  8. <div class="bgIcons questionMark">&nbsp;&nbsp;&nbsp;&nbsp;</div></span> </div> <div class="clear"></div>
  9. <div class="AlternateNamesPopup js-AlternateNamesPopup hidden" id="js-AlternateNamesPopup-15">
  10. <div style="margin-left: 138px;" class="arrow bgKrakFill"></div> <div class="AlternateNamesPopupTop">
  11. <div class="AlternateNamesPopupHeader">Inne nazwy</div> <div class="button js-close AlternateNamesPopupClose"></div> </div>
  12. <div class="AlternateNamesPopupMiddle"> <div class="AlternateNamesContainer">
  13. <a href="http://panoramafirm.pl/tremark">tremark</a> <a href="http://panoramafirm.pl/tremark/mazowieckie,,warszawa">tremark warszawa</a>
  14. </div> </div> <div class="AlternateNamesPopupBottom"></div> </div> <div class="clear"></div></h3></td> <td rowspan="3" class="pictureArea" width="158"> <div class="pictureArea"> <div class="inside"></div> </div> </td> </tr> <tr> <td class="contactArea"><div class="inside">
  15. <div class="addressArea"> <div class="left js-offerAddress">ul


interesuje mnie: Tremark Sp. z o.o.
p.s. jestem praktycznie zielony w tym ;/
zee
i tak niebardzo wiem jak sie do tego zaprac...
moze cos nakierujesz ?
wNogachSpisz
Zadaj konkretne pytanie. Czego nie rozumiesz? Wykaż odrobinę inicjatywy.
zee
Doszedlem do czegos takiego:

  1. <!-- xml version="1.0" encoding="UTF-8" -->
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <script type="text/javascript" src="http://view.binlayer.com/ad-54892.js"></script>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  7.  
  8. <meta http-equiv="refresh" content="9999 url=http://fotoswiat.com/test/2/index2">
  9.  
  10. </head>
  11. <body>
  12. <?php echo $utf8variable;?>
  13. <body>
  14. <html>
  15. <?php
  16. $url = 'http://panoramafirm.pl/artyku%C5%82y_dla_dzieci_detal'; //adres strony do przeskanowania jako lancuch znakow
  17. $ch = curl_init();
  18. curl_setopt($ch, CURLOPT_URL,$url); // ustawienie urla
  19. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // zwr w postaci zmiennej
  20. curl_setopt($ch, CURLOPT_TIMEOUT, 3);
  21. $result = curl_exec($ch); // wykonanie skryptu
  22. curl_close($ch);
  23.  
  24. $nazwa ='@<td colspan="2" class="nameArea"><h3>(.*?)</a>@is';
  25. $telefon ='@<span class="phone">(.*?)</a>@is';
  26. $adres ='@<div class="left js-offerAddress">(.*?)</div> <div class="clear">@';
  27.  
  28. $ile = preg_match_all($nazwa, $result, $matches, PREG_PATTERN_ORDER);
  29. $ile2 = preg_match_all($telefon, $result, $matches2, PREG_PATTERN_ORDER);
  30. $ile3 = preg_match_all($adres, $result, $matches3, PREG_PATTERN_ORDER);
  31.  
  32. for ($i=0; $i<26; $i++) {
  33. echo ($matches[0][$i]) . '</h3>';
  34. echo ($matches2[0][$i]) . '<br>';
  35. echo ($matches3[0][$i]) . '<br>';
  36. ?>



Dziala ok, pokazuje tylko to co chcialem...
Potrzebuje zapisac to do sql ? Nazwa, Adres, Telefon zapisuje sie tylko :
id imie nazwisko telefon
71 Array[26] Array[26] Array[26] dlaczego questionmark.gif

SQL:

  1. $dodaj = "INSERT INTO uzytkownicy (imie,nazwisko,telefon) VALUES ('$matches[0][$i]','$matches2[0][$i]','$matches3[0][$i]')";
  2. mysql_query($dodaj) or die(mysql_error());
  3. mysql_close($polaczenie);
wNogachSpisz
Działa to zbyt wiele powiedziane. Ja bym powiedział że "przypadkiem ruszyło".
Tak się tego nie robi, musisz sparsować dokument. Link z narzędziami jest w moim pierwszy poście.
zee
To ma byc jakos tak questionmark.gif

  1. <?
  2. # create and load the HTML
  3. include('simple_html_dom.php');
  4. $html = new simple_html_dom();
  5. $html = file_get_html('http://panoramafirm.pl/agroturystyka');
  6.  
  7.  
  8. $element = $html->find('td text');
  9.  
  10.  
  11.  
  12. //echo $html->save();
  13. echo $html;
  14. ?>


niewiem co ma byc tutaj: ('td text') jak zapisac to czego szukam
wNogachSpisz
Wybrałeś prawdopodobnie najgorszą możliwą biblitekę, ale tak, o to mniej więcej chodzi.
zee
To moze podaj z czym bedzie latwiej
wNogachSpisz
Po raz kolejny, link masz w moim pierwszy poście.
zee
wNogachSpisz jak masz tak odpisywac i nabijac posty to nie pisz lepiej nic bo nic mi nie pomagasz...



wNogachSpisz tobie juz dziekuje...
wNogachSpisz
Nie moja wina, że nie potrafisz kliknąć w link i przeczytać ze zrozumieniem kilku zdań po angielsku.

Troche ciężko się rozmawia gdy edytujesz post dopisując pytanie po czasie.
Ktoś kto będzie czytał ten topic pomyśli że świadomie je ignoruje sad.gif

  1. $element = $html->find('td text');
To rześ się napracował. Oczekujesz że ktoś napisze resztę za Ciebie?

Przeczytałeś manual simple_html_dom?
zee
Napisales ze wybralem najgorsza biblioteke, nieznam sie na tym wiec moze bys podal cos co bedzie latwiejsze a ty caly czas wracasz do linka z ktorego zaduzo nie rozumiem.

Potrzebuje jakies przyklady co i jak, niechce gotowca, chce to zrozumiec jakos.

Napisalem w pierwszym poscie co udalo mi sie zrobic, pisales ze nie tak to sie robi to jak...

tylko link i link

dr.google

dlaczego to co napisalem w 1 i 2 poscie n ie moze byc ?
wNogachSpisz
Cytat(zee @ 12.08.2012, 16:33:51 ) *
Napisales ze wybralem najgorsza biblioteke, nieznam sie na tym wiec moze bys podal cos co bedzie latwiejsze a ty caly czas wracasz do linka z ktorego zaduzo nie rozumiem.

Jak można się nie znać na przeczytaniu kilku zdań? Pod linkiem jest opisane która bibliteka gorsza, która lepsza. Powiedz, na czym tu trzeba się znać? 8 letnie dziecko by sobie z tym poradziło.

Cytat(zee @ 12.08.2012, 16:33:51 ) *
Potrzebuje jakies przyklady co i jak, niechce gotowca, chce to zrozumiec jakos.

W dokumentacji nie ma przykładów?

Cytat(zee @ 12.08.2012, 16:33:51 ) *
Napisalem w pierwszym poscie co udalo mi sie zrobic, pisales ze nie tak to sie robi to jak...

tylko link i link

dr.google

Dokładnie, tak się tego nie robi.
Link który podałem zawiera kompletną odpowiedzieć w dodatku świetnie przeredagowaną. Nie widzę sensu kopiowania internetu, choć wiem że ten sport ma wielu entuzjastów.
klocu
Ja stoję po stronie @wNogachSpisz. Dlaczego?

Wybrałeś bibliotekę - jaka by ona nie była; po przeczytaniu kilku postów już widzę, że nie zadałeś sobie nawet trudu zajrzenia w dokumentację wybranej przez ciebie biblioteki gdzie masz rozpisane przykłady; wziąłeś pierwszy od góry rozpisany kawałek kodu źródłowego.
Próbujesz robić to przez wyrażenia regularne - raz się uda, dwa razy nie. Zmienią strukturę strony i znów będziesz kleił wyrażenia bo nie działa. A z poziomu struktury szybciutko dojdziesz do pożądanych rezultatów.

Cytat
tylko link i link

Tak tylko link i link, bo gdzieś zostało to już wyjaśnione i skoro tamci wiedzą o co chodzi to trzeba się uczyć od właśnie takich ludzi.

Cytat
dlaczego to co napisalem w 1 i 2 poscie n ie moze byc ?

Bo to co napisałeś na siłę próbuje być stroną o składni przypominającej HTML, a w rzeczywistości ma jedynie parsować dane i wrzucać do tabelek mysql'owych. Zatem dorabianie do tego "dodatków" jest bez sensu bo nie wnoszą one nic w działanie.

Cytat
dr.google && bo juz niemam sily...

Wiedza i umiejętności nie spadają z nieba - jeśli nie masz cierpliwości do tej roboty, nie masz czasu i siły żeby poczytać manuale, przykłady skryptów porozrzucane po sieci - daruj sobie tę robotę bo stracisz czas, a nie osiągniesz satysfakcjonujących efektów. Jak coś robić to konkretnie.
Tłumaczenie że jest się zielonym nikogo nie usprawiedliwia - nawet zielony, który chce się nauczy.
zee
Napisalem swoje:
  1. <!-- xml version="1.0" encoding="UTF-8" -->
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <script type="text/javascript" src="http://view.binlayer.com/ad-54892.js"></script>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  7.  
  8. <meta http-equiv="refresh" content="9999 url=http://fotoswiat.com/test/2/index2">
  9.  
  10. </head>
  11. <body>
  12. <?php echo $utf8variable;?>
  13. <body>
  14. <html>
  15. <?php
  16. $url = 'http://panoramafirm.pl/artyku%C5%82y_dla_dzieci_detal'; //adres strony do przeskanowania jako lancuch znakow
  17. $ch = curl_init();
  18. curl_setopt($ch, CURLOPT_URL,$url); // ustawienie urla
  19. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // zwr w postaci zmiennej
  20. curl_setopt($ch, CURLOPT_TIMEOUT, 3);
  21. $result = curl_exec($ch); // wykonanie skryptu
  22. curl_close($ch);
  23.  
  24. $nazwa ='@<td colspan="2" class="nameArea"><h3>(.*?)</a>@is';
  25. $telefon ='@<span class="phone">(.*?)</a>@is';
  26. $adres ='@<div class="left js-offerAddress">(.*?)</div> <div class="clear">@';
  27.  
  28. $ile = preg_match_all($nazwa, $result, $matches, PREG_PATTERN_ORDER);
  29. $ile2 = preg_match_all($telefon, $result, $matches2, PREG_PATTERN_ORDER);
  30. $ile3 = preg_match_all($adres, $result, $matches3, PREG_PATTERN_ORDER);
  31.  
  32. for ($i=0; $i<26; $i++) {
  33. echo ($matches[0][$i]) . '</h3>';
  34. echo ($matches2[0][$i]) . '<br>';
  35. echo ($matches3[0][$i]) . '<br>';
  36. ?>



napisaliscie ze tak sie nie robi i odsylacie do czegos innego, czegos czego nie ogarniam

Jak zrobic zeby znajdowalo wszystko, albo np. 20 bo pokazuje tylko pierwsze


  1. <?
  2. $start = microtime(true);
  3. $data = file_get_contents('file.html');
  4. include('htmlparser/htmlparser.inc');
  5. $parser = new HtmlParser($data);
  6. $elements = array();
  7. while($parser -> parse()){
  8. if($parser->iNodeAttributes['class'] == "title" && strlen(trim($parser -> iNodeValue)) > 0)
  9. $element['title'] = trim($parser -> iNodeValue);
  10.  
  11. if($parser->iNodeAttributes['class'] == "tely" && strlen(trim($parser -> iNodeValue)) > 0)
  12.  
  13. $element['desc'] = trim($parser -> iNodeValue);
  14.  
  15. if(isset($parser->iNodeAttributes['href']) && strlen(trim($parser -> iNodeValue)) > 0){
  16.  
  17. $element['link'] = trim($parser -> iNodeValue);
  18. $element['url'] = trim($parser -> iNodeAttributes['href']);
  19. }
  20.  
  21. if(count($element) == 4){
  22.  
  23. $elements[] = $element;
  24. $element = array();
  25. }
  26. }
  27. foreach($elements as $element){
  28.  
  29. //echo "Title: \t".$element['title']."\n";
  30. echo "Nazwa: \t". $element['link']."\n";
  31. echo "telefon: \t".$element['desc']."\n";
  32. // echo "Url: \t".$element['url']."\n";
  33. // echo '-----'."\n";
  34. }
  35.  
  36. $end = microtime(true);
  37. //echo ($end -$start);
  38. ?>
-Zee-
pomoze ktos ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.