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

时间:2008-11-09 12:58:32

标签: c# httpwebrequest

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

4 个答案:

答案 0 :(得分:2)

[更新:我不知道为什么,但下面的两个例子现在都运行正常!最初我在第2页的例子中也看到了403。也许是服务器问题?]

首先,WebClient更容易。实际上,I've seen this before。在访问维基百科时,结果是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");
        }

我担心我不知道如何处理破坏事情的主要撇号......

答案 1 :(得分:1)

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

  

http://en.wikipedia.org/wiki/“Abadilah

无法正常工作,经过一些尝试失败后,它开始工作。

第二个网址,

  

http://en.wikipedia.org/wiki/“t_Zand_(尔芬-七岩)

对我来说总是失败......

撇号似乎是造成这些问题的原因。如果用

替换它
  

<强> 27%

所有网址都运行良好。

答案 2 :(得分:1)

尝试使用Percent Encoding (paragraph 2.1)转义特殊字符。例如,单个引号在网址(IRI)中由%27表示。

答案 3 :(得分:1)

我确信OP现在已按此排序,但我遇到了同样的问题 - 从维基百科通过网络客户端下载时间歇性的403。设置用户代理标头会将其排序:

client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");