Autor Zpráva
divá_bára
Profil *
Ahoj všem,
dejme tmu že doluji data z jiných webú pro pozdější odparsování některých dat.

Kterou z funkcí pro načítání dat z webů použít? File_get_contents nebo fopen, CURL? Co je pro mne výhodnější a proč? Jaký je rozdíl mezi jednotlivými funkcemi?

Mockrát díky za vysvětlení, určitě nejsem jediná koho by to zajímalo.
tiso
Profil
file_get_contents bude najjednoduchšie, ale zdrojový web ťa môže odhaliť a odstrihnúť (zablokovať IP).
S CURL dokážeš simulovať prehliadač, pokiaľ ťaháš dáta nejak rozumne, tak sa to nedá odhaliť.
divá_bára
Profil *
Mockrát díky za vysvětlení...
DoubleThink
Profil *
S CURL dokážeš simulovať prehliadač
S file_get_contents taky - viz třetí argument context respektive funkci stream_context_create.

Jinak fopen je univerzální funkce pro otevření obecného I/O streamu. File_get_contents jen sdružuje některé typické sekvence (fopen-flock-fread-flock-fclose). cURL je modul pro pokročilejší komunikaci se serverem - hlavně pokud chceš odesílat POST data, číst response hlavičky, kontrolovat SSL handshake, sledovat timeouty a podobně.
sir_besir
Profil *
„S CURL dokážeš simulovať prehliadač“
S file_get_contents taky - viz třetí argument context respektive funkci stream_context_create.
Jinak fopen je univerzální funkce pro otevření obecného I/O streamu. File_get_contents jen sdružuje některé typické sekvence (fopen-flock-fread-flock-fclose). cURL je modul pro pokročilejší komunikaci se serverem - hlavně pokud chceš odesílat POST data, číst response hlavičky, kontrolovat SSL handshake, sledovat timeouty a podobně.


Zdravim Vas lidičky, no nejak nasimulovat prohlížeč by se mi taky hodilo, strejček google už me odstrihl :-( souhlasim že file_got_contents to bylo nejjednodužší, takže pokud by to šlo přes to, nebo nějakej jinej funkční způsob. Chtěl sem použít Google search API ale ta vrací nesmysli :'( Děkuji mocX
srigi
Profil
sir_besir
<?php
  $ch = curl_init("http://www.ct24.cz/rss/hlavni-zpravy/");
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; cs; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3");

  $data = curl_exec($ch);
  echo '<pre>'; echo htmlspecialchars($data);
  curl_close($ch);
Jan Tvrdík
Profil
Chtěl sem použít Google search API ale ta vrací nesmysli
O tom dost pochybuji. Spíš to neumíš používat.
sir_besir
Profil *
„Chtěl sem použít Google search API ale ta vrací nesmysli“
O tom dost pochybuji. Spíš to neumíš používat.


Tomu se nebranim, to je i muj nazor, mam tohle >


<?php
function google_pos($address, $keyword, $lang) // URL webu, klíčové slovo, jazyk vyhledávání (cs,sk,en,pl,hu...)
{
// Nastaveni
$poscount = 40; // Počet prohledaných pozic

$pozice = "";
$kw = "";
$headerlang = $lang;
$lang = $lang == "" ? "" : "lang_" . $lang;
for($i=0;$i<strlen($keyword);$i++)
{
$char = substr($keyword, $i, 1);
$char = "%u00".dechex(ord($char));
$kw .= $char;
}
$keyword = $kw;
for($i=0;$i<$poscount;$i=$i+4)
{
$url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=" . $keyword . "&start=" . $i . "&lr=" . $lang . "";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept-Language: " . $headerlang . ""));
$var = curl_exec($ch);
$results = json_decode($var);
$count = count($results->{"responseData"}->{"results"});
if(($poscount-$i)<$count) $count = $poscount-$i;
for($j=0;$j<$count;$j++)
{
if(eregi($address, $results->{"responseData"}->{"results"}[$j]->{"unescapedUrl"}))
{
$pozice = $i+$j+1;
return $pozice;
exit;
}
}
}
return "0";
}
?>



jenže u přímého zápisu slov do get proměnné Google s naprostým klidem vynechá písmena s diakritikou. Zjistili jsme, že je "zchroustá" pokud je zapíšeme ve tvaru %uXXXX (XXXX je ASCII kód v hexadecimální soustavě), ale výsledky se liší od toho, co najde při vyhledávání z hlavní stránky.
Matess
Profil *
Mě to vypisuje Fatal error: Call to undefined function curl_init() in ... nevíte čím to může být? Myslíte, že to nemám povoleno na hostingu?
Jan Tvrdík
Profil
Matess
Myslíte, že to nemám povoleno na hostingu?
Pravděpodobně to nemáš na hostingu nainstalováno.
Matess
Profil *
Jan Tvrdík
Děkuji za rychlou opověď.
sir_besir
Profil *
„Chtěl sem použít Google search API ale ta vrací nesmysli“
O tom dost pochybuji. Spíš to neumíš používat.


Mohu vas poprosit jestli byjste s ena to někdo nemrknul, proč mě to vrací nesmysli ? :-(

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: