使用HttpWebRequest下载没有关键敏感问题的网页
答案 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;)");