2011-12-14 11 views
6

Aynı etki alanında olmayan bir web sayfasından HTML kodu almaya çalışıyorum. Html metni ayrıştırılır &, HTML kodunun bulunduğu sayfadaki bir tarifi (tarif adı, ana bileşenler, adım sayısı) özetler.HTML'yi başka bir web sitesinden almak için JQuery'yi kullanma: Mümkün mü? Yasal?

Kullanıcı, daha sonra tarifi görüntülemek için & alan adının dışına gitmek istediğiniz bağlantıya tıklayabilir.

Aynı Menşe Politikası'nın farkındayım, ancak bu, yerel alanın dışındaki bir web sayfasından HTML kodu almak için geçerli midir? XML ile aynı şeyi hayal ediyorum, bu yasal & izinli değil mi?

HTML metin/kodunu yerel alanımın dışındaki bir etki alanından alabilmem mümkün mü? JavaScript & JQuery kullanarak

fikir sunucunun miktarı kullanıcı istemci tarafında HTML ayrıştırma her tarifi & isteklerini gerçekleştirmek suretiyle & depolama istekleri sınırlamaktır. Bu sunucu tarafında & darboğazları durdurur aynı zamanda eski moda tarifi tarifleri silmek için & sunucu üzerinden gitmek zorunda kalmazsınız anlamına gelir.

Ben herhangi bir programlama dili veya API veya vb

+0

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

+0

tabi var aynı menşeli politika, tıpkı her şey gibi. – ArtOfWarfare

cevap

8

herhangi bir AJAX kitaplığı kullanarak yapılamaz yapmaya çalıştığımız şey. Tarayıcıların alandan alan politikası bunu yapmanıza izin vermez.

Ancak bunu php (veya herhangi bir sunucu tarafı dili) ve AJAX'ın bir kombinasyonu ile yapabilirsiniz. Böyle bir php komut dosyası oluşturun:

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

bize komut dosyasının adını fetch.php olduğunu varsayalım. Artık jQuery kodunuzdan bir AJAX çağrısı atayabilir ve bu sizin için fetch.php numarasına dönecektir. bu @Purag

3

Hayır, bu istemci tarafı JavaScript dan çalışmaz içinde Çözümleri/Öneriler açığım. Tarayıcı güvenlik nedeniyle onu engeller. Daha sonra (örneğin, cURL aracılığıyla) içeriği getir hangi (örneğin, PHP) yerel bir sunucu tarafı komut dosyasına ajax çağrı yapmak ve istediğiniz HTML dönmek gerekir.

+0

bu anyorigin.com hakkında. Bu çalışacak ve müşterinin kullanması için güvenli midir (virüs/kötü amaçlı yazılım almayacaklar)? –

+2

Evet ama bu bir JSONP API'sıdır, bu sizin sorunuz değildi :) – AlienWebguy

+0

Reddetme nedeni mi? – AlienWebguy

1

Aynı kaynak geçerlidir. Bu kodu deneyin ve

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

btw telif yasalarını daha olası ihlal edeceğiz güvenlik hatası karşısında olacak, bu yüzden dikkatli ;-)

+1

Eh .. OP ne yazarsa (web sayfasının içeriğinin bir özetini yapma ve ona bir bağlantı sağlama), tüm arama motorlarının yaptığı telif hakkı yasasını ihlal eder. –

+2

@ noah1989, evet bundan hiç hoşlanmadı. Sayfanın gizlice önizlemesini göstermede hangi arama motorunun yasa dışı olduğu ve sitenin içerik sahibinin, sitelerini "keşfedilebilir" hale getiren arama motorlarına dava açmak için üretken olduğunu düşünmesi mümkün mü? – OnesimusUnbound

2

Bulunduğunuz yanıtlara bir şeyler eklemek için, html'un "hizmet gibi" veri iletmenin bir yolu olarak kullanılmadığını söyleyebilirim. Bu amaçla, SOAP veya REST aracılığıyla XML veya JSON sayılı belgelerde açıklanmıştır.

Senaryonuzda, teknik ve yasal boyutları göz önünde bulundurarak akla gelebilecek en iyi yaklaşım, dış içeriği görüntülemek ve harici içeriğin de dahil olmak üzere iframe içeriğinin kaynağını belirtmek için iframe kullanmaktır. zaten yapıyorsun.

Hala uzak html getirmesi için sunucu tarafı yaklaşım deneyin ancak yine değil bunu yapmak için temiz bir yolu, kesinlikle olamaz iyi bir uygulamadır ve muhtemelen yasal değildir.

İçeriğin yazarı sitenin dışında yeniden kullanılabilir olmasını istiyorsa, bu biçimi, biçimlendirilmemiş içeriği bir hizmet veya RSS/Atom beslemesi aracılığıyla hazırlayarak ifade edebilir.

İlgili konular