大家好,我是一个学生,最近在为自己的作业爬数据,
网站是大众点评网,www.dianping.com在学校的时候,由于是在北京,或者是使用美国的proxy, 还没有遇到过网页重定向的问题,
可最近过年回家,我的网页爬虫爬到的数据全部按照地区被重定向到了当地的目录,数据无法继续搜集,非常着急比如说,我爬这个网页,http://www.dianping.com/shop/515445,本来是关于北京一家餐厅的评论,但是爬虫就自动重定向到了家乡的餐厅搜索结果,根本不是我需要的。
当我把hwr.AllowAutoRedirect设为false的时候,则爬虫只能下载下来一个显示重定向连接的网页,也不是我所需要的;可是当我用IE或者Firefox访问这个页面的时候,一切都好好的,就是我需要的页面,可爬虫却不行。唯一可以行得通的是采用国外的proxy,可是在家搜了好久,都没有找到能用的,非常着急。请各路高手出手相助,给您拜年了!谢谢大家!
下面是我的C#下载页面的代码: public bool Download()
{
if (!CheckTargetDir()) return false;
try
{
HttpWebRequest hwr = (HttpWebRequest)(WebRequest.Create(m_StrUrl));
hwr.UserAgent = @"Mozilla/4.0; (Compitable; MSIE 6.0; Windows NT 5.1;)"; hwr.Proxy = new WebProxy();
hwr.CookieContainer = new CookieContainer();
hwr.AllowAutoRedirect = true;
/*
hwr.Proxy = new WebProxy("http://jpnproxy.fareast.corp.microsoft.com", true);
}
*/ WebResponse wr = hwr.GetResponse();
using (Stream strmFileContent = wr.GetResponseStream())
{
using (FileStream fsTargetFile = new FileStream(m_StrTargetFile, FileMode.OpenOrCreate))
{
if (wr.ContentType.ToLower().StartsWith(@"text/"))
{
m_bIsTextType = true;
return DownloadText(strmFileContent, fsTargetFile);
}
return DownloadBinary(strmFileContent, fsTargetFile);
}
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
return false;
}
}
解决方案 »
- script runnat问题
- C# 控制台程序的问题,救命啊
- 编译生成的exe,总是同步生成一个同名的.manifest文件,有用吗?
- ListView拖动高亮+TreeView多选
- treeview控件的使用
- 我的C#程序解决方案里的所有程序前面怎么都带上了黄色感叹号?
- 请问.net里面的线程和Java里的线程有什么不同??
- 引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常。
- 取不到TextBox控件中的值!
- 怎么提取一个SQL语句中的参数?!
- 看似简单,编写却很变态的算法(根据传入名生成符合常量命名规则的字符窜)
- 新手!Winform中combobox的Items问题!
牛牛们都回家过年去了,555~~