1

ここから情報を取得するために htmlagilitypack を使用します。これがコードです

int i=2449520;

………………

web.OverrideEncoding = Encoding.UTF8;
web.UserAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0";
doc = web.Load("http://ru-patent.info/24/49/" + i + ".html");
var List = doc.DocumentNode.SelectNodes("//div[@style='padding:10px; border:#999 dotted 1px; background-color:#FFF; background-image:url(/imgs/back.gif);']");
foreach (var t in List)
{
    Regex regex = new Regex(@"\sRU\s\d+");
    Match match = regex.Match(t.InnerText);
    sw.WriteLine(i.ToString());
    while (match.Success)
    {
       sw.WriteLine(match.ToString());
       match = match.NextMatch();
    }
    sw.WriteLine('\n');
}
i++;

また、10 秒間隔のタイマーを使用しており、情報を取得する必要があるページが 1,000 を超えています。しかし、約 30 ページの後で、403 禁止エラーが発生します。どうすればこれをバイパスできますか?

4

1 に答える 1

1

レスポンス 403は、サーバーがリクエストの受け入れを拒否したことを意味します。これは、DDoS からのサーバー保護になる可能性があると思います。異なるサーバー (異なる API アドレスを持つ) を使用するか、リクエスト間で休憩を取ることができます。また、情報を解析する最善の方法は何かをサイト所有者に尋ねることも常に良いことです。

于 2013-04-14T07:35:34.373 に答える