1

私はこの問題を抱えています - 私は単純な Web スパイダーを書いていますが、これまでのところうまくいきます。問題は、私が取り組んでいるサイトに、時々リダイレクトしたり、アドレスに何かを追加したりするという厄介な習慣があることです. 一部のページでは、読み込み後に「/about」が追加され、一部のページでは完全に別のページにリダイレクトされます。Web クライアントは、html コードをダウンロードしてリンクの解析を開始するため混乱しますが、それらの多くは「../../something」の形式であるため、しばらくすると単純にクラッシュします。最初に指定されたアドレス (リダイレクトまたは「/about」を追加する前)。新しく作成されたページがキューから出てくると、404 Not Found 例外がスローされます (驚き)。

今では、自分ですべてのページに「/about」を追加するだけですが、ウェブサイト自体が常に追加するとは限りません...

アイデアをいただければ幸いです。お時間をありがとうございました。

4

1 に答える 1

5

ページ内のリンクを解析するためにページのリダイレクトされたURIを取得する場合は、次のようなWebClientのサブクラスを使用します。

class MyWebClient : WebClient
{
   Uri _responseUri;

    public Uri ResponseUri
    {
        get { return _responseUri; }
    }

    protected override WebResponse GetWebResponse(WebRequest request)
    {
        WebResponse response = base.GetWebResponse(request);
        _responseUri = response.ResponseUri;
        return response;
    }
}

WebClientの代わりにMyWebClientを使用し、ResponseUriを使用してリンクを解析します

于 2013-03-15T09:33:10.517 に答える