1

このコードは、Web サイトの HTML ファイルをダウンロードして、ハードディスクに保存しています。コンストラクターで:

var uri = new Uri("http://www.walla.co.il");

それで :

DownloadHtml();

private void DownloadHtml()
        {
            using (var client = new WebClient())
            {
                client.DownloadFile(webSite, OriginalHtmlFilePath);
            }
        }

次に、ダウンロードした html ファイルで何らかの処理を行った後、WebBrowser でロードします。

string html = File.ReadAllText(ScrambledHtmlFilePath);
webBrowser1.DocumentText = html;

たとえば、Web サイトがhttp://www.cnn.comの場合、 Web ブラウザーで問題なくロードします。たとえば、サイトがhttp://www.walla.co.ilの 場合、Web ブラウザで読み込むと、一部の画像やその他のものが表示されません。

そして、両方のサイトで、Web ブラウザーでそれらをロードすると、多くのスクリプト エラーが発生し、ページをロードし続けるために [はい] を何度もクリックする必要があります。

スクリプト エラー

このページのスクリプトでエラーが発生しました

行文字 ....

このページでスクリプトの実行を続行しますか?

次に、はいを選択し、ページが読み込まれるまでそれを行います。多くの YES を実行した後、html ファイルが cnn.com コンテンツである場合、ページは正常に読み込まれます。

しかし、html ファイルが例えば walla.co.il のようにヘブライ語である場合、最後に [はい] を何度もクリックした後、次のように表示されます。

ここに画像の説明を入力

そして、元のサイトはまったくこのようなものではありません。

4

2 に答える 2

3

ページをダウンロードすると、そのページのソース コードがダウンロードされます。ただし、ブラウザがページをダウンロードすると、HTML とともに多くのものがダウンロードされます。たとえば、JavaScript ファイル、CSS ファイル (スタイリング用) などがあります。それらをダウンロードした場合でも、必要に応じて相対パスまたは絶対パスを使用してこれらのファイルを HTML にリンクするように HTML を変更する必要がある場合があります。

つまり、添付ファイルがダウンロードされず、HTML にリンクされていないため、期待どおりに Web ページが表示されません。

アップデート

ドキュメントのソースを設定すると、HTML に関連する添付ドキュメント (css、js など) が見つからないため、Web ページで使用されません。例えば:

<link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/stackoverflow/all.css?v=a25094f085c0">

どこからロードされても機能しますが、次のとおりです。

<link rel="stylesheet" type="text/css" href="/css/all.css">

しません。

更新 2

これが、スクリプト エラーが発生する正確な理由です。.jsブラウザーは、添付されたスクリプト (タグ内のファイル) の一部 (またはほとんど、またはすべて) を見つけることができず<script>、JavaScript コードを実行しようとすると失敗します。

于 2013-06-27T19:50:57.017 に答える
0

問題は、相対パスと絶対パスです。

ブラウザーが HTML ページを表示するとき、画像、CSS シート、JavaScript なども取得する必要があります。HTML ファイルの指示により、それらの場所を認識しています。HTML の指示には、絶対パスではなく相対パスが含まれている場合があります。相対パスがあり、ページの元の場所に関する追加のヒントがない場合、Web ブラウザーはページの現在の場所またはコンテキストをベースとして、ページ上の各相対アイテムの完全なパスを作成する必要があります。 . この場合、文字列変数があるだけなので、コンテキストはありません。

ダウンロードした html ファイルの head セクションにタグを追加することで改善できますbase(タグがまだ存在しない場合)。これにより、ページの元の場所が示され、ブラウザーが相対リンクの処理方法を認識できるようになります。

于 2013-06-27T20:00:22.490 に答える