PHP: jak na ČSFD.cz vypsat seznam filmů

Pokud pravidelně hodnotíte filmy na ČSFD.cz, tak jste určitě přemýšleli nad tím jak si vypsat seznam hodnocených filmů, abyste o tom měli větší přehled a mohli třeba i něco přehodnotit. Rozhraní stránek toto přímo neumožňuje, proto přináším řešení. Pro použití budete potřebovat soubor goutte.phar a pak konkrétní skripty, které uvádím níže.

Vypsání filmů dle hodnocení pod sebe

Do skriptu je třeba vždy vložit dva odkazy a to konkrétně na seznam filmů daného uživatele hodnocených dle hvězdiček (url_str1) a pak na odkaz se stránkováním (url_strx). Potřeba je i vyplnit počet stránek se seznamy filmů (pocet_str).

<?php
require_once 'goutte.phar';

use Goutte\Client;
           
$url_str1 = "http://www.csfd.cz/uzivatel/XXX/hodnoceni/podle-rating/";
$url_strx = "http://www.csfd.cz/uzivatel/XXX/hodnoceni/podle-rating/strana-%d/";
$pocet_str = 8;

$client = new Client();
$stringText = "";

for($i=1; $i<=$pocet_str; $i++) {
            if(1 == $i)
                        $url = $url_str1;
            else
                        $url = sprintf($url_strx, $i);

            $crawler = $client->request('GET', $url);
            $sel = "table.ui-table-list tbody tr td:first-child a";

            $crawler->filter($sel)->each(function ($td, $i2) use (&$stringText) {
                        $stringText .= "$td->textContent\n";
            });

            file_put_contents("test.txt", $stringText);
}

Skript vytvoří soubor test.txt a jeho výstup můžete vidět zde.

Vypsání filmů dle hodnocení vedle sebe

Změnit je potřeba úplně to stejné jako v prvním případě (url_str1, url_strx a pocet_str).

<?php
require_once 'goutte.phar';

use Goutte\Client;

$url_str1 = "http://www.csfd.cz/uzivatel/XXX/hodnoceni/podle-rating/";
$url_strx = "http://www.csfd.cz/uzivatel/XXX/hodnoceni/podle-rating/strana-%d/";
$pocet_str = 8;

$client = new Client();
$stringText = "";

for($i=1; $i<=$pocet_str; $i++) {
            if(1 == $i)
                        $url = $url_str1;
            else
                        $url = sprintf($url_strx, $i);

            $crawler = $client->request('GET', $url);
            $sel = "table.ui-table-list tbody tr td:first-child a";

            $crawler->filter($sel)->each(function ($td, $i2) use (&$stringText) {
                        $stringText .= '<a style="color:black;" href="http://www.csfd.cz';
                        $stringText .= $td->attributes->getNamedItem("href")->textContent;
                        $stringText .= '">'. htmlspecialchars($td->textContent)."</a> | \n";
            });

            file_put_contents("test.html", $stringText);
}

Skript vytvoří soubor test.html a jeho výstup můžete vidět zde.

Publikováno 3.3.2013 v 12:28 | Kategorie: PHP