4

Web サイトの一部だけを別の HTML ページに埋め込む方法はありますか?

例: ブログに書きたい回答を見つけたので、HTML コンテンツを取得し、それをどこかに配置して、stackoverflow にあるようなスタイルで表示します。基本的に、それが理にかなっていれば、ページのセクションを元のスタイルで引用したいと思います。それはサイト自体が提供しなければならないものですか、それとも iframe を使用して、特定の要素またはクレイジーなものだけを表示するように指示できますか? すべてのオプションを使用できますが、画像ではなく HTML として表示したい (これは最後の手段です)。

これが可能である場合、注意が必要なセキュリティ上の懸念はありますか?

4

5 に答える 5

7

画像が本当に最後の手段であるべきだとは思わないでください。ソース ページの HTML/CSS を制御することはできないため、(おそらく JavaScript を使用して目的のスニペットを解析することによって) 解決策を作成したとしても、明日サイトがそのレイアウトを変更することを決定しないという保証はありません。

stackoverflow.com のレイアウトを管理している Jeff でさえ、コンテンツをライブで取り込むよりも、サイトのスクリーン キャプチャを好んでいます。

コンテンツを自動更新することが目標である場合は、話は別です。それでも、RSS など、コンテンツを共有するための合意された方法を使用しない限り、ソリューションは非常に壊れやすいものになります。

于 2009-06-15T21:05:58.483 に答える
2

あなたが説明している概念は、大まかに「紫色のインクルード」または「トランスクルージョン」と呼ばれるものです。そのためのライブラリがありますが、積極的に開発されているわけではありません。ここにいくつかのajaxianの 記事があります。

于 2009-06-15T21:36:38.877 に答える
1

クライアント側<iframe>では、唯一の実用的なオプションです。スクロールすることは可能ですが、技術的にクリックジャッキング攻撃に近いため、長期的には機能しない可能性があります。

クロスサイト XHR もありますが、宛先サイトからオプトインする必要があり、現在は最新のブラウザーでしか機能しません。

サーバー側で HTML を取得するのは簡単です (すべての適切な Web フレームワークには、ページをダウンロードして HTML を解析する機能があり、必要なビットを抽出するために XPath/XSLT または DOM を使用できます)。

ただし、スタイルを取得するのは簡単ではありません。CSS ルールは、コンテキストから切り離された HTML フラグメントでは機能しない可能性があります。CSS を解析し、ルールを抽出して変換するか、ブラウザを使用currentStyleしてすべてのノードを読み取る必要があります。

明らかに、XSS を回避するために、抽出する HTML を大幅にフィルタリングする必要があります。見た目よりも難しいです。

これを自動化する必要がない場合は、優れた HTML+CSS WYSIWYG エディターで、スタイルを使用してコンテンツ フラグメントを抽出できる可能性があります。

于 2009-06-16T12:36:05.017 に答える
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()

そうすれば、ウェブマスターが後でページのマークアップを変更した場合でも、スクレイピング スクリプトは機能するはずです。

于 2009-06-15T21:28:54.980 に答える
0

これには、IE8 の Web スライスが最適なように思えます。ただし、これは IE8 でのみ利用可能であり、それを利用できるようにするには、元のサイトを実装する必要があります。

于 2009-06-15T20:53:35.297 に答える