it-swarm-eu.dev

Je možné načíst pouze konkrétní část webu?

Mám tento projekt, na kterém pracuji, a rád bych přidal opravdu malý seznam míst v okolí pomocí míst na Facebooku ve funkci iframe z touch.facebook.com. Mohu snadno použít touch.facebook.com/#places.php, ale pak načte horní lišty.

Každopádně existuje způsob, jak s URL manipulovat, takže načte pouze obsah míst, než aby měl horní a dolní lištu nabídek. Po pohledu na kód vypadá, že existuje div id="content". Přemýšlel jsem možná, že existuje způsob, jak vytvořit URL tak, aby načítala pouze div? Také jsem se pokusil vytvořit URL, která by mohla prostě skočit dolů na obsah pomocí touch.facebook.com/#places.php#content, ale zřejmě tímto způsobem bylo vytvořeno touch.facebook.com, které nefunguje.

Opravdu bych raději vymyslel způsob, jak načíst pouze část obsahu.

Pokračoval jsem a vyzkoušel tento přístup v PHP. Přečetl jsem si příklady pro file_get_contents a to, co je tady, vypadá dobře, podle příkladu 1:

<?php
$page = file_get_contents('http://touch.facebook.com');
$doc = new DOMDocument();
$doc->loadHTML($page);
$divs = $doc->getElementsByTagName('div');
foreach($divs as $div) {
      if ($div->getAttribute('id') === 'content') {
         echo $div->nodeValue;
    }
}
?>

Ale dostanu úplně prázdnou stránku.

6
brybam

Nebudete moci manipulovat s adresou URL, abyste získali pouze část stránky. To, co budete chtít udělat, je chytit obsah stránky pomocí jazyka na straně serveru podle vašeho výběru a poté analyzovat HTML. Odtud si můžete vzít konkrétní DIV, který hledáte, a poté jej vytisknout na obrazovku. Můžete také použít k odstranění nežádoucího obsahu.

Pomocí PHP můžete použít file_get_contents() pro přečtení souboru, který chcete analyzovat, a poté použít DOMDocument pro jeho analýzu a uchopit požadovaný DIV.

Tady je základní myšlenka. To je netestováno, ale mělo by vás nasměrovat správným směrem:

$page = file_get_contents('http://touch.facebook.com');
$doc = new DOMDocument();
$doc->loadHTML($page);
$divs = $doc->getElementsByTagName('div');
foreach($divs as $div) {
    // Loop through the DIVs looking for one withan id of "content"
    // Then echo out its contents (pardon the pun)
    if ($div->getAttribute('id') === 'content') {
         echo $div->nodeValue;
    }
}
3
John Conde

Pokud jde o další odpovědi, chápu, že se chcete dostat mimo autentizační stránku.

Nejdříve se musíte přihlásit, poté se dostat na stránku, kterou potřebujete, a nakonec zpracovat iteraci DOM.

Jako možnost vyřizování požadavků máte zvlnění, takže se přihlaste. K získání obsahu stránek můžete také použít zvlnění.

http://php.net/manual/en/book.curl.php

http://devzone.zend.com/article/1081

0
Dave

Stránka, kterou se pokoušíte otevřít, vyžaduje ověření. Pravděpodobně jste se dívali na data, která jste chtěli po přihlášení. To je důvod, proč, když jste se pokusili stránku programově poškrábat, ukazuje obsah přihlašovací stránky.

Namísto použití tohoto postupu seškrabáním byste mohli zkontrolovat, zda lze potřebné informace extrahovat programově pomocí Facebook API

V související poznámce můžete použít YQL k načtení části jakékoli webové stránky na veřejném webu. Ve vašem případě však nemusí fungovat, protože stránka, ke které se pokoušíte získat přístup, vyžaduje ověření.

0
mvark