DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   (X)HTML, JavaScript, DHTML, XML, CSS (http://www.devprotalk.com/forumdisplay.php?f=8)
-   -   fetch podataka sa drugih sajtova (http://www.devprotalk.com/showthread.php?t=10060)

pecili 25. 05. 2011. 04:12

Radi ti taj prvobitni kod. Mozda ti databaza nije dobro postavljena.


AdriaMart 25. 05. 2011. 12:04

Da, verovatno je do mysql baze ... mada baza postoji, video sam preko phpmyadmina kao i sadrzaj.

Br@nkoR 25. 05. 2011. 12:50

Pokušaj da zameniš
Kôd:

$row['text'] = str_replace("<", "<", $row['text']);
sa
Kôd:

$row['text'] = str_replace("<", "&lt;", $row['text']);
A takođe pokušaj i da sadršaj koji čitaš iz baze prvo propustiš kroz funkciju htmlentities() pa onda štampaš.

AdriaMart 25. 05. 2011. 16:00

Da li je mozda greksa kao sto kaze ''Pecili'' u lose postavljenoj bazi ???... i kada je to slucaj. Ceo dan sam juce pokusavao sa razlicitim varijantama koda ali bez uspeha... svuda izadje:
error on line 38 at column 3: Extra content at the end of the document ili document empty i sl. ima li neko proveren kod za citanje mysql baze u xml format

Br@nkoR 25. 05. 2011. 16:23

Postavi uz poruku generisani xml fajl. Zaboravio sam gore da napišem pokušaj i sa htmlspecialchars() funkcijom.

AdriaMart 25. 05. 2011. 16:39

<?php

header("Content-type: text/xml");

$host = "localhost";
$user = "user";
$pass = "lozinka";
$database = "baza";

$linkID = mysql_connect($host, $user, $pass) or die("Could not connect to host.");
mysql_select_db($database, $linkID) or die("Could not find database.");

$query = "SELECT * FROM tabela";
$resultID = mysql_query($query, $linkID) or die("Data not found.");

$xml_output = '<' . '?' . 'xml version="1.0" ' . '?' . '>';
$xml_output .= "<entries>\n";

for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){
$row = mysql_fetch_assoc($resultID);
$xml_output .= "\t<entry>\n";
$xml_output .= "\t\t<ID>" . $row['ID'] . "</ID>\n";
// Escaping illegal characters
htmlentities();
$row['text'] = str_replace("&", "&", $row['text']);
$row['text'] = str_replace("<", "&lt;", $row['text']);
$row['text'] = str_replace(">", "&gt;", $row['text']);
$row['text'] = str_replace("\", "&quot;", $row['text']);
htmlentities();
$xml_output .= "\t\t<text>" . $row['text'] . "</text>\n";
$xml_output .= "\t</entry>\n";
}

$xml_output .= "</entries>";
htmlentities();
echo $xml_output;

?>

Takdoje sam sada video da kada stavim decimlnu tip podataka za latitude i longitude onda se u bazi upise kao 0.440000 a treba da se upise kao 44.3421344... ???

Br@nkoR 25. 05. 2011. 16:52

Nisam mislio na to, već na generisanu stranicu, ali hajde probaj ovako:
PHP kôd:

<?php 

header
("Content-type: text/xml"); 

$host "localhost"
$user "user"
$pass "lozinka"
$database "baza"

$linkID mysql_connect($host$user$pass) or die("Could not connect to host."); 
mysql_select_db($database$linkID) or die("Could not find database."); 

$query "SELECT * FROM tabela"
$resultID mysql_query($query$linkID) or die("Data not found."); 

$xml_output '<' '?' 'xml version="1.0" ' '?' '>';
$xml_output .= "<entries>\n"

for(
$x $x mysql_num_rows($resultID) ; $x++){ 
$row mysql_fetch_assoc($resultID); 
$xml_output .= "\t<entry>\n"
$xml_output .= "\t\t<ID>" $row['ID'] . "</ID>\n"
// Escaping illegal characters 
$row['text'] = htmlspecialchars ($row['text']);
$xml_output .= "\t\t<text>" $row['text'] . "</text>\n"
$xml_output .= "\t</entry>\n"

$xml_output .= "</entries>"
echo 
$xml_output

?>


AdriaMart 25. 05. 2011. 17:05

This page contains the following errors:

error on line 31 at column 3: Extra content at the end of the document

Below is a rendering of the page up to the first error.


Verovatno imam gresku u bazi... pokusacu drugacije da sredim ovo. Hvala najlepse na pomoci.

webarto 25. 05. 2011. 17:11

header("Content-type: text/xml"); ukini ovaj header pa vidi šta će ispisati, ubaci u XML validator i vidi...

Br@nkoR 25. 05. 2011. 17:14

Proveri u svom php fajlu da li posle php taga za zatvaranje ?> nema neki karakter/sadržaj.

A što se tiče problema sa decimalnim brojevima proveri da li si definisao u bazi potreban format/raspon polja, npr. nešto kao decimal(10,6)

AdriaMart 25. 05. 2011. 18:33

xml validator kaze:

Error: Object # has no method 'load'

webarto 25. 05. 2011. 19:38

Pa postavi nama XML, ništa ovo ne znači, odnosno sve je jasno.

AdriaMart 25. 05. 2011. 20:40

Takdoje sam video da mi brojeve decimalne ne upisuje lepo u bazu iako sam stavio tip DECIMAL 10,6 jer su string... pa me interesuje koju funciju da upotrebim da bih prebacio string u integer odnosno u decimal... da li moze ovako $data= (decimal) $data;

AdriaMart 26. 05. 2011. 00:14

Nerazumem sta se desava sa mojom mysql bazom kad ni provereni tutoriali sa neta ne rade...

webarto 26. 05. 2011. 00:31

Zato i ne radi...

AdriaMart 26. 05. 2011. 00:35

Predlozite mi vi neki proveren kod za export mysql baze u xml fajl ... sve je ok kada se radi rucno ali sa php komandama nece nikako!

pecili 26. 05. 2011. 05:36

Citat:

Originalno napisao AdriaMart (Napišite 99281)
Predlozite mi vi neki proveren kod za export mysql baze u xml fajl ... sve je ok kada se radi rucno ali sa php komandama nece nikako!

http://vijayk.wordpress.com/2006/12/...ble-using-php/

AdriaMart 07. 06. 2011. 02:23

Kada su koordinate date u ovakvom obliku: var lat = 44.780921; var lang = 20.47195;
izvuku se funcijom: preg_match('/var\s+lat\s+=\s+(\d+\.\d+)\s*;/', $location, $lat);

preg_match('/var\s+lang\s+=\s+(\d+\.\d+)\s*;/', $location, $lang);

... ali kako da izvucem obe koordinate kada su date ovako i moze li uopste da se uradi: var latlng = new google.maps.LatLng(40.806279 , 20.496687);

Znaci najpre prvu i da joj dam vrednost $lat a zatim i drugu kojoj ce vrednost biti $lng ???

AdriaMart 07. 06. 2011. 03:17

Hvala svima na pomoci a evo i dokle sam stigao: http://kuponik.adriamart.com/act.php ... naravno treba jos mnogo toga uraditi ali to je to za sada.

Medjutim sada imam jedan mali problem: kada su koordinate date u ovakvom obliku: var lat = 44.780921; var lang = 20.47195;
izvuku se funcijom: preg_match('/var\s+lat\s+=\s+(\d+\.\d+)\s*;/', $location, $lat);

preg_match('/var\s+lang\s+=\s+(\d+\.\d+)\s*;/', $location, $lang);

... ali kako da izvucem obe koordinate kada su date ovako i moze li uopste da se uradi: var latlng = new google.maps.LatLng(40.806279 , 20.496687);

Znaci najpre prvu i da joj dam vrednost $lat a zatim i drugu kojoj ce vrednost biti $lng ???

miks 07. 06. 2011. 07:05

Kôd:

$regex = '!\.LatLng\(\s*(\d+\.\d+)\s*,\s*(\d+\.\d+)\)!';
preg_match($regex, $str, $match);
$lat = $match[1];
$lng = $match[2];

Nije testirano.

AdriaMart 07. 06. 2011. 12:03

Ne radi ...

<?php




$dom = new DOMDocument();
@$dom->loadHTMLFile('http://www.popusti.rs/offer/today');
$xpath = new DOMXPath($dom);
$entries = $xpath->query("//div[@id='wrapper']//h3//a/@href");
$output = array();
foreach($entries as $e) {
$dom2 = new DOMDocument();
@$dom2->loadHTMLFile('http://www.popusti.rs' . $e->textContent);
$xpath2 = new DOMXPath($dom2);
$data = array();

$regex = '!\.LatLng\(\s*(\d+\.\d+)\s*,\s*(\d+\.\d+)\)!';
preg_match($regex, $str, $match);
$data['lat'] = $match[1];
$data['lng'] = $match[2];


$output[] = $data;
}


echo '<pre>' . print_r($output, true) . '</pre>';


?>

Br@nkoR 07. 06. 2011. 12:26

Npr. umesto $str stavi $dom2->saveHTML() ili nešto kao:

$xpath2->query("//div[@id='content']/div[@class='offer-details']/script")->item(0)->textContent

AdriaMart 07. 06. 2011. 13:35

Hvala care!

AdriaMart 08. 06. 2011. 01:54

Kako npr. odavde izvuci koordinate: <div class="googleMap jGoogleMap">
<img src="http://maps.google.com/maps/api/staticmap?center=50.2723069,18.991302700000006&amp ;zoom=14&amp;size=189x172&amp;maptype=roadmap&amp; markers=color:orange|50.2723069,18.991302700000006 &amp;sensor=false"s obzirom da se one nalaze unutar linka?

AdriaMart 08. 06. 2011. 02:08

Takodje da pitam da li postoji neki program za regex ili sl. koji bi mi ubrzao proces jer ima dosta sajtova sa kojih pokusavam da izvucem po nesto. Video sam rexexbuddy ali on se placa :(

AdriaMart 08. 06. 2011. 03:46

Da li postoji mogucnost da se napravi neki ''crawler'' ili je to previse slozeno...

Br@nkoR 08. 06. 2011. 08:29

Možda nešto kao:
PHP kôd:

<?php
$string 
'<div class="googleMap jGoogleMap"> 
<img src="http://maps.google.com/maps/api/staticmap?center=50.2723069,18.991302700000006&amp ;zoom=14&amp;size=189x172&amp;maptype=roadmap&amp; markers=colorrange|50.2723069,18.991302700000006 &amp;sensor=false'
;

$regex '/<img src="http:\/\/maps\.google\.com\/maps\/api\/staticmap\?center=(\d+\.\d+),(\d+\.\d+)/';

preg_match($regex$string$match);

$data['lat'] = $match[1];
$data['lng'] = $match[2]; 

echo 
'<pre>' print_r($datatrue) . '</pre>'
?>

Od alata Expresso, The Regex Coach...

AdriaMart 08. 06. 2011. 18:17

Kako je moguce da ovaj kod izvlaci pogresne koordinate:
<?php



$string = file_get_contents('http://www.groupon.pl');
$regex = '/<img src="http:\/\/maps\.google\.com\/maps\/api\/staticmap\?center=(\d+\.\d+),(\d+\.\d+)/';

preg_match($regex, $string, $match);

$data['lat'] = $match[1];
$data['lng'] = $match[2];

echo '<pre>' . print_r($data, true) . '</pre>';

?>

50.27... i 18.99... su koordinate koje treba da se izvuku a ovaj kod izvlaci svaki put drugacije koordinate (posle nekoliko refresovanja koordinate se menjaju - ?????

Prvi put izvuce:
[lat] => 54.41894259999999
[lng] => 16.412185300000033

Drugi put izvuce:
Array
(
[lat] => 52.2378869
[lng] => 20.999525800000015
)

... ???

Br@nkoR 08. 06. 2011. 20:19

Pa možda se podaci menjaju na stranici, ne prikazuju se uvek isti podaci, koliko vidim na toj stranici postoji samo jedana takva slika, odradi echo $string; i vidi šta je u tom trenutku prikazano na stranici, kada se izvlače koordinate.

AdriaMart 09. 06. 2011. 00:19

podaci na stranici se ne menjaju ...mozda postoji neka funkcija koja ne dozvoljava izvlacenje koordinata ili funciju filegetcontents... ali stvarno mi nije jasno zasto skripta menja koordinate kada na toj strani druge koordinate ne postoje... ali hvala u svakom slucaju ... resicu vec nekako ako ne potrazicu pomoc. dosta toga sam vec naucio ne samo o php-u nego i o xml-u i regexu

webarto 09. 06. 2011. 00:27

E pa nije :) Ti nisi pitao na ovim stranicama kako da riješiš problem već "show me teh codes" :)
Promjeni REGEXP...

AdriaMart 09. 06. 2011. 01:05

Epa dobro evo :) ... kako da resim problem :) mozda da upotrebim cURl ili ???
ustvari curl + regex ili mozda xpath (xml). Mene samo zanima odgovor na pitanje zasto se koordinate menjaju posle nekjoliko refresa kada u open sourcu se nalzi samo jedan koordinata tj. (longitude i latitude) i to je to! ?

AdriaMart 09. 06. 2011. 02:18

Jel upoznat neko sa ASP.NET MVC 3, razor sintaksom kao i entity frameworkom jer vidim da je vecina agregatora ponuda napravljena pomocu asp-a (grupiranje.com)... koja je razlika izmedju asp-a i php-a. gde je lakse raditi i sta je bolje nauciti asp ili php.

Br@nkoR 09. 06. 2011. 09:17

Citat:

Originalno napisao AdriaMart (Napišite 99598)
<?php

$string = file_get_contents('http://www.groupon.pl');
$regex = '/<img src="http:\/\/maps\.google\.com\/maps\/api\/staticmap\?center=(\d+\.\d+),(\d+\.\d+)/';

preg_match($regex, $string, $match);

$data['lat'] = $match[1];
$data['lng'] = $match[2];

echo '<pre>' . print_r($data, true) . '</pre>';

?>

Evo upravo isprobavam ovaj kod i uvek izvlaci iste podatke i posle nekoliko refresha. Na stranici
Kôd:

http://www.groupon.pl
dok testiram kod prikazana je slika
Kôd:

http://maps.google.com/maps/api/staticmap?center=50.2967641,19.041866099999993&zoom=14&size=189x172&maptype=roadmap&markers=color:orange|50.2967641,19.041866099999993&sensor=false
i odatle izvlači podatke 50.2967641 i 19.041866099999993
Da li je ovo kompletan kod koji koristiš za izvlaćenje sadržaja sa ovog sajta ili ima još nešto što nisi napisao?
Ili ja nisam lepo razumeo problem.

webarto 09. 06. 2011. 12:44

cURL služi samo da "dohvatiš" sadržaj, samo što je 4-5x brži od FGC i ima mnooogo više opcija.
To u čemu je napravljen site nema veze output je HTML... Nije nigdje lakše raditi.

PHP kôd:

preg_match("#center=(.*?)&#is"$string$matches);
$matches explode(","$matches[1]);
list(
$lat$lon) = $matches

Za svaki site moraš napisati parser, tu ne postoji silver bullet ali mogao si olakšati sebi posao sa onim Simple HTML DOM parserom da koristiš Sizzle.js selectore... RegExp se ne koristi za parsiranje HTML-a, ali za extractovanje svakako...

slavkan 09. 06. 2011. 14:37

Ovo je extra impresioniran sam. Da li je neko pokusavao da preuzme podatke sa umbrelinog sajta i da li je to legalno raditi. Kako bi recimo za izgledalo za Beograd (temperatura,vlaznost,vetar)

http://www.weather2umbrella.com/ba/v...84/0/meteogram

AdriaMart 09. 06. 2011. 14:54

ok. hvala

webarto 09. 06. 2011. 14:54

Imaš u ovom URLu sve podatke samo treba da skontaš kako su upareni i eto ti riješenje... Mislim nemaš šta da kontaš, izvuci svaki parametar u array, uradi count, loop, i print, i sve će se samo složiti...

Citat:

w2u.cdn.rs/modules/mod_w2u_city_weather/meteogram.swf?prvidan=Cetvrtak&vreme=1,5,4,5,5,5,5 ,5,4,4,8,10,9,4,8,8,4,4,4,3,4,8,4,4,8,8,8,8,8,8,8, 4,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,5,5,5,4,8, 4,&temp=18,17,19,24,23,22,19,17,15,14,17,16,17,21, 20,18,16,14,18,22,24,23,20,17,16,15,16,18,19,19,18 ,16,14,13,19,23,25,25,21,16,14,12,19,25,27,27,22,1 8,16,14,21,24,23,24,22,20,19,&prec=0,1.4,0.4,0.5,2 .5,1.2,0.4,0.2,0.2,0,0,0.7,1.3,0.1,0.1,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0.5,1.6,0.9,0,0,0,&rel=71,90,82,64,64,6 9,80,91,92,91,74,90,90,64,68,73,82,88,72,52,49,55, 64,74,77,81,71,70,66,67,73,80,88,93,70,53,47,42,60 ,71,81,89,66,47,35,37,59,71,82,89,68,61,65,62,73,7 4,79,&wind=2,2,2,2,2,3,5,5,5,5,6,5,5,4,3,2,1,2,3,4 ,4,4,3,2,2,2,3,4,4,3,2,2,2,3,3,4,5,5,3,2,2,2,2,3,5 ,4,3,2,2,2,2,3,2,3,2,3,2,&winddir=119,239,212,180, 276,278,276,281,277,272,282,291,294,307,324,335,32 8,269,280,318,342,4,11,30,32,13,344,352,7,19,6,342 ,306,291,315,348,349,360,6,350,317,297,307,360,13, 13,18,8,303,274,273,307,308,270,239,227,236,&datum 1=08.06.2011&modelrun=00&degree=C

Br@nkoR 09. 06. 2011. 15:02

ili npr. sa, gde se nalaze u html obliku
http://www.weather2umbrella.com/ba/v...1/1924284/0/1h

webarto 09. 06. 2011. 15:04

^ Još lakše, bolje...


Vreme je GMT +2. Trenutno vreme je 01:50.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.