用C#代码 get请求获取网页响应代码,通过HttpWebRequest的GetResponse()方法报异常,我想获取这相应代码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C#代码 get请求获取网页响应代码,通过HttpWebRequest的GetResponse()方法报异常,我想获取这相应代码相关的知识,希望对你有一定的参考价值。
如何实现呢?
是响应代码
string sRet = "";
try
//目标网址事先存在字符串 sPage 中
HttpWebRequest Myrq = (HttpWebRequest)HttpWebRequest.Create(sPage );
Myrq.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; EmbeddedWB 14.52 from: http://www.bsalsa.com/ EmbeddedWB 14.52; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";
Myrq.Accept = "*/*";
Myrq.Method = "GET";
Myrq.Headers.Add(HttpRequestHeader.AcceptLanguage, "zh-cn");
Myrq.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
Myrq.KeepAlive = true;
//Myrq.Referer = xmlurlrefer;//有些网址要求指定referer
//有些网页需要cookie的
//Myrq.Headers.Add(HttpRequestHeader.Cookie, sCookie);
HttpWebResponse myrp = (HttpWebResponse)Myrq.GetResponse();
long totalBytes = myrp.ContentLength;
Encoding ec;
if (!string.IsNullOrEmpty(myrp.CharacterSet))
ec = Encoding.GetEncoding(myrp.CharacterSet);//如果响应的网页头有指定编码就用指定编码,否则采用默认的GB2312编码
else
ec = Encoding.GetEncoding("GB2312");
Stream st = myrp.GetResponseStream();
using (StreamReader sr = new StreamReader(st,ec ))
sRet = sr.ReadToEnd();
st.Close();
//Console.WriteLine(sRet);
return sRet;
catch (WebException ex)
Console.WriteLine(ex.ToString());
return sRet;
参考技术A 啊
C# 实现模拟网页操作
我做的是winform程序,要在后台自动输入网站的用户名和密码,并登陆到主页面,然后抓取主页面部分的源代码,这些部分我已经完成,现在遇到个问题,在网页源文件中,有些是通过ajax请求输出的文字,在源文件中获取不到。如图
报价是通过ajax处理的。下图是他的ajax部分
,我通过webBrowser怎么去执行他的这个ajax,使得源代码中,有报价的内容呢?
/maintain/interface/forindex/ashx?dealerid=100015266&type=4&number=57976156
如果能打开并获取到json文本数据的话,你就可以通过代码用HttpRequest的Get方法去获得这段数据。
得到数据后分析下数据,然后你想干嘛就干嘛吧 参考技术B 以前试过 好像没办法。ajax应该是等页面载入以后再执行。你可以循环解析源代码查看是否已经取得ajax部分的代码追问
这个应该不行的吧,我直接通过浏览器打开后,鼠标右击查看源文件,都是空的,现在就是取不到那个值,愁死了
追答你通过浏览器打开那个页面(不是程序的webbrowers) 网页源代码里也是空的?
追问webBrowser1控件获取的源代码也是空的。现在问题这样,我后台自动点击webBrowser1页面中的一个超链接,在webBrowser1控件中已经看到跳转成功,进入b页面,然后我抓取的源码怎么还是上一个链接中的呢?求解。是不是事件不对
追答你放一个按钮 试试 等页面完全加载完毕后再获取一下源代码试试 有没有ajax加载的部分
if (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
return;
string wbUrl = wb.Url.ToString();
System.Windows.Forms.HtmlDocument document = this.webBrowser1.Document;
if (e.Url.ToString() != wb.Url.ToString())
return;//不断拒绝,只有URL是webbrowser1的navigate地址才接受
以上是关于用C#代码 get请求获取网页响应代码,通过HttpWebRequest的GetResponse()方法报异常,我想获取这相应代码的主要内容,如果未能解决你的问题,请参考以下文章
C# HttpWebRequest 绝技 根据URL地址获取网页信息
带有 file_get_contents 的 HTTP 请求,获取响应代码