请问各位大牛,如何获得需要登录的网站的登录后的网页内容,有网站用户名和密码,按照网上搜索的一些内容,做了如下代码,但是时灵时不灵,大多数时候都不好使,但是有时候又好用,不知道为什么?代码如下,请各位大侠帮忙解答一下,非常感谢。public static string PostData(string url, string indata, CookieContainer
myCookieContainer)
{
string outdata = "";
HttpWebRequest myHttpWebRequest =(HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.AllowAutoRedirect = true;
myHttpWebRequest.KeepAlive = true;
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
myHttpWebRequest.ContentLength = indata.Length;
myHttpWebRequest.Method = "POST";
myHttpWebRequest.CookieContainer = myCookieContainer; Stream myRequestStream = myHttpWebRequest.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream,
Encoding.GetEncoding("gb2312"));
myStreamWriter.Write(indata);
myStreamWriter.Close();
myRequestStream.Close(); HttpWebResponse myHttpWebResponse =
(HttpWebResponse)myHttpWebRequest.GetResponse();
myHttpWebResponse.Cookies =
myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
Stream myResponseStream = myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream,
Encoding.GetEncoding("gb2312"));
outdata = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close(); return outdata;
} //获取网页内容的按键
private void button_GetNetContent(object sender, EventArgs e)
{
CookieContainer myCookieContainer = new CookieContainer(); string url = "https://login.taobao.com/";//登录页面的链接
//要发送的用户名和密码
string loginfo = "TPL_username=xxx&TPL_password=xxx";
string outdataStr;
string filename = FilePath.Text; //先登录
outdataStr = PostData(url, loginfo, myCookieContainer);
url = "http://i.taobao.com/my_taobao.htm?";//登录后,要查询的子网页
outdataStr = PostData(url, "", myCookieContainer);//返回目标页面 if (saveToFileSel.Checked)//保存页面内容到文件
{
FileStream fileStream = new FileStream(filename,
FileMode.OpenOrCreate, FileAccess.Write); byte[] byteSave =
Encoding.GetEncoding("GB2312").GetBytes(outdataStr);
fileStream.Write(byteSave, 0, byteSave.Length); fileStream.Close();
}
}获取网页内容 URL c#url获取网页内容HttpWebResponse
myCookieContainer)
{
string outdata = "";
HttpWebRequest myHttpWebRequest =(HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.AllowAutoRedirect = true;
myHttpWebRequest.KeepAlive = true;
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
myHttpWebRequest.ContentLength = indata.Length;
myHttpWebRequest.Method = "POST";
myHttpWebRequest.CookieContainer = myCookieContainer; Stream myRequestStream = myHttpWebRequest.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream,
Encoding.GetEncoding("gb2312"));
myStreamWriter.Write(indata);
myStreamWriter.Close();
myRequestStream.Close(); HttpWebResponse myHttpWebResponse =
(HttpWebResponse)myHttpWebRequest.GetResponse();
myHttpWebResponse.Cookies =
myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
Stream myResponseStream = myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream,
Encoding.GetEncoding("gb2312"));
outdata = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close(); return outdata;
} //获取网页内容的按键
private void button_GetNetContent(object sender, EventArgs e)
{
CookieContainer myCookieContainer = new CookieContainer(); string url = "https://login.taobao.com/";//登录页面的链接
//要发送的用户名和密码
string loginfo = "TPL_username=xxx&TPL_password=xxx";
string outdataStr;
string filename = FilePath.Text; //先登录
outdataStr = PostData(url, loginfo, myCookieContainer);
url = "http://i.taobao.com/my_taobao.htm?";//登录后,要查询的子网页
outdataStr = PostData(url, "", myCookieContainer);//返回目标页面 if (saveToFileSel.Checked)//保存页面内容到文件
{
FileStream fileStream = new FileStream(filename,
FileMode.OpenOrCreate, FileAccess.Write); byte[] byteSave =
Encoding.GetEncoding("GB2312").GetBytes(outdataStr);
fileStream.Write(byteSave, 0, byteSave.Length); fileStream.Close();
}
}获取网页内容 URL c#url获取网页内容HttpWebResponse
登录失败,还是登录成功但是获取到的网页源代码不正确?
你抓网页的使用的gb2312,但是有很多网页是其他格式编码(比如utf8)。这个地方要改成网站对应的编码。
2,编码方式只是会导致显示格式不对,比如乱码什么的,不影响抓取的数据,只影响显示;
3,webBrowser没有试过,不知道我上面的代码为什么不成功。