Autor Zpráva
Lukyyyyn
Profil *
Jak to udělat když potřebuji data z jednoho webu který má cca 20 000 stránek a potřebuji z každé stránky text který se nachází na řádku 155 ve zdrojovém kódu? Seznam těch url mám. Ale nevím jak to udělat.
TomasJ
Profil
Lukyyyyn:
Dá se to provést pomocí PHP funkce file_get_contents. Tím načteš obsah stránky.
Dalším krokem bude rozseknout vytažený obsah na řádky pomocí explode. Řádky můžou končit buď s \n nebo s \r\n.
Z výsledného pole si vytáhneš potřebný výsledek - $vyslednePoleRadku[154] (154 je index 155. řádku).
Lukyyyyn
Profil *
TomasJ:
A to by se muselo dělat pro každou stránku zvlášť? Nebo by tam šel zadat seznam třeba po 10000 stránkách?
andynewcastleth
Profil
Seznam URL máš v souboru nebo databázi?
Lukyyyyn
Profil *
andynewcastleth:
V souboru .txt
Kajman
Profil
Lukyyyyn:
Jako první krok získejte souhlas od majitele těch stránek, ze kterých chcete těžit data.
andynewcastleth
Profil
Nejdřív si načteš soubor a budeš čerpat adresy řádek po řádku:


<?php 
$handle = fopen("test.txt", "r");
if ($handle) {
    while (($line = fgets($handle)) !== false) {
        echo $line.'<br/>';
    }

    fclose($handle);
} else {
    // error opening the file.
} 
?>

A potom místo pouhého vypsání pomocí echo $line.'<br/>'; nahradíš za $ziskanyobsah = file_get_contents('$line'); čímž jsi načetl obsah celého webu do proměnné $ziskanyobsah. A nyní z toho obsahu musíš dostat jen ten potřebný řádek a někam jej uložíš.

Pokud máš ale 20 000 stránek, tak problém bude:

- nemůžeš se na něčí stránky jen tak 20 000 krát připojit
- běh toho skriptu bude velmi dlouhý, maximální doba běhu je tak 60 sekund, zatímco ty by jsi potřeboval tak 20 minut, takže by jsi ten skript musel rozsekat na několik částí, vždy stahovat např. po 50 stránkách
TomasJ
Profil
Kajman:
Pokud získá souhlas, může pak jednoduše zažádat i o nějaký přístup k API a nemusí načítat celou stránku

Lukyyyyn ^^^
NoxOne
Profil
Vždy se říkalo "za zeptání nic nedáš" :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0