1

使用 HttpWebRequest 下载没有关键敏感问题的网页

4

4 回答 4

2

[更新:我不知道为什么,但是下面的两个示例现在都可以正常工作!最初我在 page2 示例上也看到了 403。也许是服务器问题?]

首先,WebClient更容易。其实,我以前见过这个。访问维基百科时,url 中的大小写敏感;尝试确保您在对维基百科的请求中使用了相同的案例。

[更新] 正如 Bruno Conde 和 gimel 所观察到的,使用 %27 应该有助于使其保持一致(间歇性行为表明可能某些维基百科服务器的配置与其他服务器不同)

我刚刚检查过,在这种情况下,案例问题似乎不是问题......但是,如果它有效(它没有),这将是请求页面的最简单方法:

        using (WebClient wc = new WebClient())
        {
            string page1 = wc.DownloadString("http://en.wikipedia.org/wiki/Algeria");

            string page2 = wc.DownloadString("http://en.wikipedia.org/wiki/%27Abadilah");
        }

恐怕我想不出对破坏事物的领先撇号该怎么办......

于 2008-11-09T13:20:39.577 回答
1

我确定 OP 现在已经对此进行了排序,但我刚刚遇到了同样的问题 - 通过网络客户端从维基百科下载时出现间歇性 403。设置用户代理标头可以对其进行排序:

client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
于 2009-12-26T20:34:57.627 回答
1

我也得到了奇怪的结果......首先,

http://en.wikipedia.org/wiki/ '阿巴迪拉

没有工作,经过一些失败的尝试后它开始工作。

第二个网址,

http://en.wikipedia.org/wiki/ 't_Zand_(Alphen-Chaam)

对我来说总是失败...

撇号似乎是造成这些问题的原因。如果您将其替换为

%27

所有网址都可以正常工作。

于 2008-11-09T13:56:45.883 回答
1

尝试使用百分比编码(第 2.1 段)转义特殊字符。例如,单引号%27在 URL ( IRI ) 中表示为。

于 2008-11-09T13:59:07.253 回答