2011-12-14 7 views
6

Próbuję uzyskać kod HTML ze strony internetowej, która nie znajduje się w tej samej domenie. Tekst html jest analizowany pod numerem & podsumowuje recepturę (nazwę przepisu, główne składniki, liczbę kroków) znajdującą się na stronie, z której pochodzi kod HTML.Używanie JQuery do pobrania kodu HTML z innej strony internetowej: Możliwe? Prawny?

Użytkownik może kliknąć łącze &, aby wyświetlić przepis, przejdź do strony internetowej poza domeną.

Jestem świadomy polityki tego samego pochodzenia, ale czy dotyczy to pobierania kodu HTML ze strony internetowej poza domeną domową? Wyobrażam sobie, że jest dokładnie taki sam jak XML, więc jest to dozwolone pod warunkiem, że jest to dozwolone?

Czy istnieje sposób, aby uzyskać tekst/kod HTML z domeny spoza mojej domeny krajowej?

użyciu JavaScript & JQuery, chodzi o to, aby ograniczyć ilość serwer żąda & przechowywanie przez posiadające użytkownik wykonać żądania dla każdej receptury & parsowania HTML po stronie klienta. To zatrzymuje wąskie gardła po stronie serwera & oznacza również, że nie muszę przechodzić przez serwer & usunąć stare przestarzałe receptury podsumowań.

Jestem otwarty na rozwiązania/sugestie w dowolnym języku programowania lub API lub itp

+0

[Yup] (http://stackoverflow.com/questions/8336129/extracting-the-content-of-an-element-from-an-external-page/8336276#8336276) – Purag

+0

@Purag, który jest poddawany polityka tego samego pochodzenia, jak wszystko inne. – ArtOfWarfare

Odpowiedz

8

To, co próbujesz zrobić, nie może zostać wykonane przy użyciu dowolnej biblioteki AJAX. Polityka międzydomenowa przeglądarek nie pozwala na to.

Ale można to zrobić za pomocą kombinacji php (lub dowolnego innego języka po stronie serwera) i AJAX. Utwórz skrypt php tak:

<?php 
    $url=$_POST['url']; 
    if($url!="") 
     echo file_get_contents($url); 
?> 

Powiedzmy nazwa skryptu jest fetch.php. Teraz możesz rzucić wywołanie AJAX z kodu jQuery do tego fetch.php, a on pobierze kod HTML dla Ciebie.

3

Nie, to nie będzie działać z po stronie klienta JavaScript. Przeglądarka zapobiega temu ze względów bezpieczeństwa. Będziesz musiał wywołać wywołania ajax do lokalnego skryptu po stronie serwera (na przykład PHP), który następnie pobierze zawartość (na przykład przez cURL) i zwróci żądany kod HTML.

+0

co z tym anyorigin.com. czy to działałoby i czy jest bezpieczne dla klienta (nie otrzymają wirusów/złośliwego oprogramowania)? –

+2

Tak, ale to, co jest, to JSONP API, co nie było twoim pytaniem :) – AlienWebguy

+0

Powód przegranej? – AlienWebguy

1

Stosuje się to samo źródło. spróbuj tego kodu i będziesz twarz błąd zabezpieczeń

$.get("other web page site", {}, function(content){ 
    $("#receipe").html(content) 
}, "html") 

btw, będziesz częściej naruszają prawa autorskie, więc być ostrożny ;-)

+1

No cóż ... jeśli to, co opisuje OP (streszczanie zawartości strony i podanie linku do niej) narusza prawo autorskie, to robią to wszystkie wyszukiwarki. –

+2

@ noah1989, tak nigdy nie z tego. Czy jest możliwe, że to, co robi wyszukiwarka, jest nielegalne w pokazywaniu niejawnego podglądu strony i że właściciel treści witryny uważa, że ​​przeciwnie jest wysuwać pretensje do wyszukiwarek, które sprawiają, że ich strona jest "wykrywalna". – OnesimusUnbound

2

Aby dodać coś do odpowiedzi, które już masz, mogę powiedzieć, że html nie jest przeznaczony do przesyłania danych "jak usługa". W tym celu jest XML lub JSON wyeksponowany przez SOAP lub REST.

W swoim scenariuszu najlepszym podejściem, jakie mogę sobie wyobrazić, biorąc pod uwagę zarówno aspekty techniczne, jak i prawne, jest użycie iframe do wyświetlania zawartości zewnętrznej i cytowania źródła treści elementu iframe, w tym zewnętrznego linku, takiego jak już to robisz.

Nadal można spróbować podejścia po stronie serwera, aby pobrać zdalny html, ale znowu nie jest to czysty sposób, z pewnością nie jest to dobra praktyka i prawdopodobnie nie jest legalna.

Jeśli autor treści chce, aby był on możliwy do ponownego użycia poza swoją witryną, może wyrazić tę intencję, udostępniając niesformatowaną treść za pośrednictwem usługi lub kanału o wartości RSS/Atom.

Powiązane problemy