HttpWebRequest请求数据报错
本帖最后由 swiminwater 于 2013-02-05 14:46:41 编辑 报错内容:远程服务器返回错误: (403) 已禁止。
我使用类HttpWebRequest抓取http://www.sse.com.cn/disclosure/announcement/regular/ 地址下的预约披露情况数据。报以上错误。
前几天还能抓取,我使用httpwatch 跟踪的数据地址为:http://query.sse.com.cn/infodisplay/queryBltnBookInfo.do?jsonCallBack=jsonpCallback2227&isPagination=true&bulletintype=L011&publishYear=2012&cmpCode=&startTime=&pageHelp.pageNo=3&pageHelp.beginPage=1&pageHelp.endPage=5&sortName=companyCode&direction=asc&_=1360045417487
代码为:
if (true)
{
try
{
HttpWebRequest request = WebRequest.Create(strUrl) as HttpWebRequest;
request.Timeout = 90000;
request.KeepAlive = false;
request.Method = "GET";
request.UserAgent = "Mozilla/Ie";
request.ContentType = "application/x-www-form-urlencoded";
// 接收返回的页面
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
System.IO.Stream responseStream = response.GetResponseStream();
//Encoding.UTF8 || Encoding.Default 编码格式
System.IO.StreamReader reader = new System.IO.StreamReader(responseStream, System.Text.Encoding.UTF8);
strHtml = reader.ReadToEnd();
}
catch (Exception ex)
{
throw ex;
}
请大侠帮忙,看看怎么修改代码才能抓取数据出来。在线等....如果有分,我一定分给大家,希望大侠帮忙!!! C#, HttpWebRequest 抓取
------解决方案--------------------
你对同一个网站不停的抓包,人家把你ip封了
你换个ip再试试,或者用类似翻墙软件不停的伪装你的ip
[解决办法]
403就是网页无法访问了,你看一下用IE能访问吗
IE能访问就能取到的
反之就如二楼所言,IP是否被封了,可以改用手机登录下
[解决办法]
亲,你“抓“别人的数据也不要这样频繁嘛,低调一点
1.在每次抓取后线程都要随机休息一段时间
2.一旦被封,你只能使用代理来伪装你的Ip
3.request的其它参数请填写完整,这样看起来好像是人的操作。
[解决办法]
你抓包抓的太频繁了,ip被人家列入黑名单了吧?