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)

Br@nkoR 01. 10. 2011. 07:21

A kako izvlačiš podatke sa drugih sajtova, pošto si napisao da za ostale sajtove radi?
Da ti nisu blokirali pristup sajtu ukoliko neovlašćeno koristiš sadržaj sajta.
Vraća li šta:
PHP kôd:

$ch curl_init();
curl_setopt($chCURLOPT_URL'http://www.grupovina.rs');
curl_setopt($chCURLOPT_RETURNTRANSFERfalse);
curl_setopt($chCURLOPT_HEADERtrue);
$data curl_exec($ch);
curl_close($ch);
echo 
$data

Edit: Ukloni znakove @ iz koda koji sam prethodno bio postavio, kako bi se prikazale greške, jer sam ja u brzini bio zaboravio da uklonim.

AdriaMart 01. 10. 2011. 13:49

Sa drugih sajtova izvlacim podatke na isti nacin - potpuno isti!
Ne verujem da su me blokirali jer sam juce prvi put pokrenuo fajl i nije radio (cak ni pokazivao greske ni prvi put)
Izmenio sam kod (bez@) tj. samo $dom i pise:

Warning: DOMDocument::loadHTMLFile() [domdocument.loadhtmlfile]: Document is empty in http://www.grupovina.rs/beograd/, line: 1 in /home/pluspon/public_html/grupovina1.php on line 14

Puno ti hvala na izdvojenom vremenu ali bice sajt bez ponuda grupovine!

Br@nkoR 01. 10. 2011. 14:59

Nema na čemu :)

$dom->loadHTMLFile() vrati prazan fajl, kao što i piše.
Pokušaj i ovaj kod, postavi ovde šta vrati:
PHP kôd:

$ch curl_init();
curl_setopt($chCURLOPT_URL'http://grupovina.rs/beograd/');
curl_setopt($chCURLOPT_RETURNTRANSFERfalse);
curl_setopt($chCURLOPT_HEADERtrue);
curl_setopt($chCURLOPT_NOBODYtrue);
$data curl_exec($ch);
curl_close($ch);
var_dump($data); 


AdriaMart 01. 10. 2011. 15:42

kod:

HTTP/1.1 200 OK Date: Sat, 01 Oct 2011 13:10:40 GMT Server: Apache/2.2.9 (Fedora) X-Powered-By: PHP/5.2.6 Set-Cookie: PHPSESSID=jtlkcmv8fc6npnp0osn45eb6c2; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: wordpress_test_cookie=WP+Cookie+check; path=/ X-Pingback: http://grupovina.rs/xmlrpc.php Set-Cookie: wpgr_splash_screen_visible=1; expires=Sun, 02-Oct-2011 01:10:41 GMT; path=/ Set-Cookie: wpgr_splash_screen_visible=1; expires=Sun, 02-Oct-2011 01:10:41 GMT; path=/ Vary: Accept-Encoding Connection: close Content-Type: text/html; charset=UTF-8 Set-Cookie: SERVERID=; Expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/ bool(true)


a klikom na http://grupovina.rs/xmlrpc.php dobijem obavestnje:
XML-RPC server accepts POST requests only.

Br@nkoR 01. 10. 2011. 15:53

Izbaci red curl_setopt($ch, CURLOPT_NOBODY, true); pa vidi da li uz ovo gore vrati i neki sadržaj.

AdriaMart 01. 10. 2011. 15:57

Vrati skoro ceo sajt, pogledaj http://pluspon.com/grupovina1.php

Br@nkoR 01. 10. 2011. 16:04

Probaj prvo da u kod za izvlačenje sadžaja koristiš link:
http://grupovina.rs/beograd/
Dakle bez www, red:
PHP kôd:

@$dom->loadHTMLFile('http://www.grupovina.rs/beograd/'); 

zameni sa
PHP kôd:

@$dom->loadHTMLFile('http://grupovina.rs/beograd/'); 

Ovaj put stavi znak @ kako bi se blokirale greške ukoliko postoje u html kodu ili umesto ovoga znaka na početak fajla stavi libxml_use_internal_errors(true);

Ili pokušaj da iskoristiš onu curl funkciju koju već imaš i zameni red:
PHP kôd:

@$dom->loadHTMLFile('http://www.grupovina.rs/beograd/'); 

sa:
PHP kôd:

@$dom->loadHTML(curl('http://grupovina.rs/beograd/')); 

I red:
PHP kôd:

@$dom2->loadHTMLFile($e->textContent); 

zameni sa:
PHP kôd:

@$dom2->loadHTML(curl($e->textContent)); 

U curl fukciju dodaj i red:
PHP kôd:

curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue); 

Mada ukoliko ovo dodaš, trebalo bi da radi i sa www u linku.

Br@nkoR 01. 10. 2011. 16:29

Pošto sam vršio neke izmene u prethodnoj poruci.
Probaj ovo:
PHP kôd:

error_reporting(E_ALL E_NOTICE);
ini_set('display_errors'1);  

libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTMLFile('http://grupovina.rs/beograd/');
$xpath = new DOMXPath($dom);
$entries $xpath->query("//div[@class='deal-medallion-heading']/h1/a/@href"); 
$output = array(); 

foreach(
$entries as $e) { 
  
$dom2 = new DOMDocument(); 
  
$dom2->loadHTMLFile($e->textContent);
  
$xpath2 = new DOMXPath($dom2); 
  
$data = array(); 
  
$data['link']= trim($e->textContent);
  
$data['naslov'] = trim($xpath2->query("//div[@class='deal-medallion-heading']/h1/a")->item(0)->textContent); 
  
$data['naslov'] .= '. ' trim($xpath2->query("//span[@class='deal-medallion-deal-title']/a")->item(0)->textContent); 
  
$data['slika'] = trim($xpath2->query("//div[@id='slider']/ul/li/img/@src")->item(0)->textContent);
  
$data['lat'] = trim($xpath2->query("//input[@id='latitude']/@value")->item(0)->textContent); 
  
$data['lng'] = trim($xpath2->query("//input[@id='longitude']/@value")->item(0)->textContent);
  
$output[] = $data
}
echo 
'<pre>' print_r($outputtrue) . '</pre>'

Ili:
PHP kôd:

error_reporting(E_ALL E_NOTICE);
ini_set('display_errors'1);  

function 
curl($url){
  
$ch curl_init();
  
curl_setopt($chCURLOPT_URL$url);
  
curl_setopt($chCURLOPT_ENCODING"gzip");
  
curl_setopt($chCURLOPT_RETURNTRANSFER1);
  
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
  
$data curl_exec($ch);
  
curl_close($ch);
  return 
$data;
}

libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML(curl('http://grupovina.rs/beograd/'));
$xpath = new DOMXPath($dom);
$entries $xpath->query("//div[@class='deal-medallion-heading']/h1/a/@href"); 
$output = array(); 

foreach(
$entries as $e) { 
  
$dom2 = new DOMDocument(); 
  
$dom2->loadHTML(curl($e->textContent)); 
  
$xpath2 = new DOMXPath($dom2); 
  
$data = array(); 
  
$data['link']= trim($e->textContent);
  
$data['naslov'] = trim($xpath2->query("//div[@class='deal-medallion-heading']/h1/a")->item(0)->textContent); 
  
$data['naslov'] .= '. ' trim($xpath2->query("//span[@class='deal-medallion-deal-title']/a")->item(0)->textContent); 
  
$data['slika'] = trim($xpath2->query("//div[@id='slider']/ul/li/img/@src")->item(0)->textContent);
  
$data['lat'] = trim($xpath2->query("//input[@id='latitude']/@value")->item(0)->textContent); 
  
$data['lng'] = trim($xpath2->query("//input[@id='longitude']/@value")->item(0)->textContent);
  
$output[] = $data
}
echo 
'<pre>' print_r($outputtrue) . '</pre>'


AdriaMart 01. 10. 2011. 18:40

TO JE TO, znaci problem je bio cURL ili ???

Br@nkoR 01. 10. 2011. 20:21

Da li oba primera rade?

Nisam baš vešt u objašnjavanju.
$dom->loadHTMLFile() iz nekog razloga (verzija, modul, podešavanja... nisam siguran) nije pratio redirekciju, dakle ne izvrši se
Kôd:

Location: http://grupovina.rs/beograd/
(ukloni se www) već vrati praznu stranicu, a cURL ima veće mogućnosti pa postoji i ova opcija da prati redirekciju/lokaciju (CURLOPT_FOLLOWLOCATION).


Vreme je GMT +2. Trenutno vreme je 16:24.

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.