Autor | Zpráva | ||
---|---|---|---|
divá_bára Profil * |
#1 · Zasláno: 31. 1. 2009, 13:10:31
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 |
#2 · Zasláno: 31. 1. 2009, 13:55:19
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 * |
#3 · Zasláno: 31. 1. 2009, 16:05:52
Mockrát díky za vysvětlení...
|
||
DoubleThink Profil * |
#4 · Zasláno: 31. 1. 2009, 16:09:24 · Upravil/a: DoubleThink
„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 * |
#5 · Zasláno: 1. 2. 2009, 16:14:13
„„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 |
#6 · Zasláno: 1. 2. 2009, 16:43:54
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 |
#7 · Zasláno: 1. 2. 2009, 16:44:10
„Chtěl sem použít Google search API ale ta vrací nesmysli“
O tom dost pochybuji. Spíš to neumíš používat. |
||
sir_besir Profil * |
#8 · Zasláno: 1. 2. 2009, 21:09:40
„„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 * |
#9 · Zasláno: 2. 2. 2009, 07:00:16
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 |
#10 · Zasláno: 2. 2. 2009, 07:02:19
Matess
„Myslíte, že to nemám povoleno na hostingu?“ Pravděpodobně to nemáš na hostingu nainstalováno. |
||
Matess Profil * |
#11 · Zasláno: 2. 2. 2009, 07:05:21
Jan Tvrdík
Děkuji za rychlou opověď. |
||
sir_besir Profil * |
#12 · Zasláno: 2. 2. 2009, 10:50:27
„„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 ? :-( |
||
Časová prodleva: 15 let
|
0