2009-06-15 102 views
4

有沒有辦法只在另一個HTML頁面中嵌入網頁的一部分?從其他網站嵌入HTML部分?

例子:我看到一個答案,我想在博客,所以我搶HTML內容,並在某處圖示它,並且只顯示,風格就像是計算器。基本上,我想用原始樣式來阻止頁面的部分,如果這是有道理的。這是網站本身必須提供的東西,還是我可以使用iframe並告訴它只顯示某個元素或某種瘋狂的東西?打開所有選項,但我希望它顯示爲HTML,而不是圖像(這真的是最後的手段)。

如果這甚至是可能的,我是否需要注意安全問題?

回答

7

不要以爲形象應該是最後的手段。您無法控制源頁面的HTML/CSS,因此即使您製作瞭解決方案(可能使用JavaScript解析出所需摘錄),也不能保證明天該站點不會決定更改其佈局。

即使傑夫,誰擁有stackoverflow.com佈局的控制權,仍然喜歡screen-capture該網站,而不是拉直播內容。

現在,如果你的目標是讓內容自動更新,這將是一個不同的故事。但是,除非您使用一些商定的共享內容的方法,例如RSS,否則您的解決方案將非常脆弱。

+0

圖像也具有免費的html支持,完全的安全性,而不是帶寬吸取目標網站的帶寬的優勢,他們不太可能感謝你。 – annakata 2009-06-16 12:41:28

0

這聽起來像IE8的Web切片將是完美的東西。但是,它僅在IE8中可用,並且原始站點必須爲您實施以便能夠利用它。

1

我建議在Python中使用服務器端解決方案;使用urllib2請求頁面,然後使用BeautifulSoup解析出您需要的位。 BeautifulSoup有一個非常靈活的選擇API與您可以通過精心設計啓發你感興趣的部分

爲了說明:

soup = BeautifulSoup(html) 
text = soup.find(text="Some text on the page that is unlikely to change") 
print soup.parent.prettify() 

,如果網站管理員後來改變了頁面上的標記方式,您的拼搶腳本應該仍然有效。

2

您所描述的概念大致是所謂的「紫色包含」或「包含」。這裏有一個圖書館,但它並不完全積極開發。這裏有一對ajaxianarticles就可以了。

1

客戶端是唯一實用的選項。可以滾動它,但從長遠來看它可能不起作用,因爲它在技術上接近於點擊劫持攻擊。

還有跨站點XHR,但需要選擇在從目標網站,如今只能在一些最新的瀏覽器。

獲得服務器端的HTML很容易(每體面的web框架已經下載頁面和解析HTML的能力,你可以使用XPath/XSLT或DOM來提取位你想要的)。

入門款式但是將是棘手 - CSS規則可能不斷章取義的HTML片段工作。你必須解析CSS,提取和轉換規則或使用瀏覽器,並閱讀每個節點的currentStyle

很明顯,您必須大量過濾HTML,才能避免XSS。這似乎比看起來更難。

如果您不需要自動執行此操作,一個好的HTML + CSS所見即所得編輯器可能能夠使用樣式提取內容片段。