Autor Zpráva
Tomasekkk
Profil *
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
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
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 *
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
file_get_contents('http://lyzovani.infocesko.cz/content/inphoto.aspx?mistoid=213&pt=4&lid=1&clid=1');
Nechce se tomu.

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 *
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
Alphard:
Na co se dřív používala jiná než logická hodnota u CURLOPT_RETURNTRANSFER? Počet vracených bajtů?
Alphard
Profil
[#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 *
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.

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: