Autor | Zpráva | ||
---|---|---|---|
Tomasekkk Profil * |
#1 · Zasláno: 8. 1. 2012, 13:42:28
Zdravim vsechny, nez se do toho pustim, rad bych poprosil o informaci, nevím jak daleko pokročilo PHP, ale rád bych např. z této stránky http://lyzovani.infocesko.cz/content/inphoto.aspx?mistoid=213&pt=4&lid=1&clid=1 načítal informace o Výšce sněhu, teploty atp. vše je uvedeno v tazích TD apod.
Nevím jak toto nejlépe řešit, osobně si myslím, že dobrá volba cURL, ale čím tuto stránku rozparsovat? Děkuji Tom |
||
Alphard Profil |
#2 · Zasláno: 8. 1. 2012, 15:56:13
cURL je možná zbytečně složité, file_get_contents() by mohlo stačit.
Parsovat pomocí regulárů, bude-li to vhodné, tak předtím rozebrat přes DOM. |
||
SeparateSK Profil |
#3 · Zasláno: 8. 1. 2012, 16:32:08 · Upravil/a: SeparateSK
Alphard:
„file_get_contents() by mohlo stačit.“ neviem prečo, ale vyhadzuje mi to: Warning: file_get_contents(http://lyzovani.infocesko.cz/content/inphoto.aspx?mistoid=213&pt=4&lid=1&clid=1) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error Ale ,keď dám inú stránku načítať. Napr google, tak to funguje bez problémov veď na tú stránku sa v pohode v prehliadači pripojím, tak v čom je problém ? |
||
Tomasekkk Profil * |
#4 · Zasláno: 8. 1. 2012, 16:44:39 · Upravil/a: Tomasekkk
Alphard: Děkuju, udělám to tedy přes to. To víš, PHP pokročilo a vždy když dělám něco znovu, nechci kopírovat script a pak jej jen upravovat, chci jít s dobou :-)
SeparateSK A teď to vidím ten problém taky, že by nějaká ochrana na lyzovani.infocesko.cz? |
||
Alphard Profil |
#5 · Zasláno: 8. 1. 2012, 16:58:11
file_get_contents('http://lyzovani.infocesko.cz/content/inphoto.aspx?mistoid=213&pt=4&lid=1&clid=1'); Tomasekkk: Není to obvyklé, ale někdy se pracuje s cURL, tohle kdysi fungovalo skvěle. protected function load($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 20); $dataSet = curl_exec($ch); curl_close($ch); if ($dataSet === false) { throw new Exception("Nepodarilo se nacist data z API: ".curl_error($ch)); } else { return $dataSet; } } |
||
Tomasekkk Profil * |
#6 · Zasláno: 8. 1. 2012, 17:40:25
Děkuji, s cURL umím, jen jsem právě netušil, zda-li to tahat přes něj nebo použít něco jiného. Jinak pro informaci, část věcí z načtené webovky tahám přes funkci preg_match_all();
|
||
Tori Profil |
#7 · Zasláno: 8. 1. 2012, 17:51:41
Alphard:
Na co se dřív používala jiná než logická hodnota u CURLOPT_RETURNTRANSFER? Počet vracených bajtů? |
||
Alphard Profil |
#8 · Zasláno: 8. 1. 2012, 18:17:06
[#7] Tori
Abych pravdu řekl, když se teď na to dívám, nevím, jestli to není chyba. Dost jsem se setkal s 1, protože je kratší než true. Vzhledem k implicitnímu přetypování to bez pozorného čtení (což jsi udělala až teď ty :-)) neodhalíš. Možná byl zkopírovaný řádek s timeout a zapomnělo se na přepsání hodnoty, po těch letech nevím. |
||
Tomasekkk Profil * |
#9 · Zasláno: 9. 1. 2012, 11:37:12 · Upravil/a: Tomasekkk
Tak se tak na to dívám, ale ani cURL to neumí vytáhnout, stále nějaká chyba :-( I když jsem zvýšil timeouty. Ale zvláštní, že když na ten web lyzovani.infocesko.cz zajdu přes prohlížeč funguje vše v pohodě
Problém vyřešen, přes cURL se musela podstrčit hlavička prohlížeče. |
||
Časová prodleva: 11 let
|
0