C# 用空间Webbrowser请求网页获取不到源代码

问题描述

我的代码是这样子的,但是却获取不到一些页面的代码,我该怎么做。我是想获取QQ群成员页面的信息的页面地址是stringurl=string.Format("http://qun.qzone.qq.com/group#!/{0}/member",item.Value);privatevoidGet_Group_Number(){//获取群号码集合dic=GetHtml("http://qun.qzone.qq.com/group","groups_list","ul",1);string[]members_list=newstring[dic.Count];inti=0;foreach(varitemindic){//访问每个的单独URL并获取成员信息stringurl=string.Format("http://qun.qzone.qq.com/group#!/{0}/member",item.Value);browser1.Navigate(url);//访问群空间while(loading){Application.DoEvents();//等待本次加载完毕才执行下次循环.}//与上边的GetHtml()是不同的,是重载,获取每个群内的成员号码members_list[i]=GetHtml(browser1,"s_members_listmembers_list","div");i++;}}

解决方案

解决方案二:
在页面加载完成事件里面获取HTMLDocumentAjax的网页一般用定时器
解决方案三:
引用1楼pupo的回复:

在页面加载完成事件里面获取HTMLDocumentAjax的网页一般用定时器

我是在页面加载完成的时候判断了一下如果加载全部完成了,就终止循。如果没有加载完成就一直调用Doevents()来处理Windows消息。privatevoidbrowser1_DocumentCompleted(objectsender,WebBrowserDocumentCompletedEventArgse){if(browser1.ReadyState==WebBrowserReadyState.Complete)///URL文档全部加载完成时{loading=false;}}而且如果单独的一个按钮跳转也是不执行navigate方法的
解决方案四:
还要判断e.URLif(browser1.ReadyState==WebBrowserReadyState.Complete)///URL文档全部加载完成时*****************************************************************************签名档:http://feiyun0112.cnblogs.com/
解决方案五:
引用3楼feiyun0112的回复:

还要判断e.URLif(browser1.ReadyState==WebBrowserReadyState.Complete)///URL文档全部加载完成时*****************************************************************************签名档:http://feiyun0112.cnblogs.com/

browser.URL总是比e.URL晚一个节奏,browser.URl是thisURL的时候e.URL是nextURL。但是还是会进入if块执行
解决方案六:
如果网页用了框架DocumentCompleted中你那样判断是不准确的
解决方案七:
引用5楼pupo的回复:

如果网页用了框架DocumentCompleted中你那样判断是不准确的

没有框架,源代码是检查过的。即便是用了框架,加上URL的判断也是可以的吧。。
解决方案八:
我看了下这个页面,是ajax加载的DocumentCompleted是没有用的,只用使用定时器,每隔一段时间去读取一下webbrowser.document
解决方案九:
你可以用WebClient类WebClientMyWebClient=newWebClient();Byte[]pageData;//MyWebClient.Credentials=CredentialCache.DefaultCredentials;//获取或设置用于对向Internet资源的请求进行身份验证的网络凭据。pageData=MyWebClient.DownloadData(url);//从指定网站下载数据pageHtml=Encoding.Default.GetString(pageData);//如果获取网站页面采用的是GB2312,则使用这句//pageHtml=Encoding.UTF8.GetString(pageData);//如果获取网站页面采用的是UTF-8,则使用这句
解决方案十:
publicstringdownHtmldata(stringhtmlBaseAddress,stringhtmlUrl){try{WebClientmyClientHtml=newWebClient();myClientHtml.BaseAddress=htmlBaseAddress;stringhtmlText=myClientHtml.DownloadString(htmlUrl);//下载数据returnhtmlText;//返回网页源代码}catch(Exceptione){showceshi(e.Message);//无网络解析报错}returnnull;}

找规律再用indexof和substring提取
解决方案十一:
引用8楼buafto的回复:

你可以用WebClient类WebClientMyWebClient=newWebClient();Byte[]pageData;//MyWebClient.Credentials=CredentialCache.DefaultCredentials;//获取或设置用于对向Internet资源的请求进行身份验证的网络凭据。pageData=MyWebClient.DownloadData(url);//从指定网站下载数据pageHtml=Encoding.Default.GetString(pageData);//如果获取网站页面采用的是GB2312,则使用这句//pageHtml=Encoding.UTF8.GetString(pageData);//如果获取网站页面采用的是UTF-8,则使用这句

网站是需要登录的,WebClient怎么登录呢
解决方案十二:
引用7楼pupo的回复:

我看了下这个页面,是ajax加载的DocumentCompleted是没有用的,只用使用定时器,每隔一段时间去读取一下webbrowser.document

我又看了一下,单纯的一个navigate也不会跳转

时间: 2024-11-08 22:03:49

C# 用空间Webbrowser请求网页获取不到源代码的相关文章

httpclient连续访问网页获取数据,是否会遇到缓存

问题描述 我用httpclient的get方法持续访问一个页面,基本上一秒发一次get请求,获取页面上面的文本,这个文本信息是会根据服务器端数据更新的.打个比方,这个信息一般为"False",一天中会有30秒变为"TRUE",我需要捕获这个"TRUE"信息.但是我发现即使服务器端更新了,我的程序获取的依然是"FALSE",并没有获取到更新的信息.我用wireshark监测,我的确是每秒发出一个get请求.那为什么会没拿到那个更

获取参数-C#请求和获取网页内容

问题描述 C#请求和获取网页内容 C#初学者,需要用C#在网页上发送一个请求,然后获得返回值,但是直接发网址会提示错误并且得不到任何请求,真心没弄懂发送请求时应该包含哪些参数,或者是不是接受的数据不对? 例如在浏览器中直接输入网址http://i.xiaoi.com/robot/webrobot?&callback=__webrobot_processMsg&data=%7B%22sessionId%22%3A%2276749f187ed74431ac008f4ab116c327%22%2

技术-用jsoup抓取网页获取网页源码的时候,得到的源码和在网站上面点击右键查看源码不相同,怎么解决

问题描述 用jsoup抓取网页获取网页源码的时候,得到的源码和在网站上面点击右键查看源码不相同,怎么解决 用jsoup抓取网页获取网页源码的时候,得到的源码和在网站上面点击右键查看源码不相同,怎么解决 Document doc = Jsoup.parse(new URL(url), 5000); 解决方案 一部分html是ajax异步加载的,你得用fiddler调试,得到这些请求,照着写 解决方案二: C++ 抓取网页的源码获取网页的源码获取网页源码工具类

微信公众平台开发(106) 网页获取用户地理位置

关键字:微信公众平台 JSSDK 获取地理位置接口 网页获取用户地理位置 getLocation作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-web-location.html     在这篇微信公众平台开发教程中,我们将介绍如何在网页中获取用户的地理位置信息. 本文分为以下二个部分: 生成JS-SDK权限验证签名 使用地理位置接口获取坐标   一.微信JS-SDK 1. 获得Access Token access token的获得方法在

webBrowser查找网页句柄

问题描述 privatevoidbutton1_Click(objectsender,EventArgse){intparentHandle=FindWindow("ShellEmbedding",null);parentHandle=FindWindowEx(parentHandle,0,"ShellDocObjectView",null);parentHandle=FindWindowEx(parentHandle,0,"InternetExplore

http服务器-http请求网页不全问题,急

问题描述 http请求网页不全问题,急 用浏览器请求这个url:http://weixin.sogou.com/gzhjs?cb=sogou.weixin.gzhcb&openid=oIWsFt5UYijHEg0l7SJOebS87g0U&ext=ODT92Z2knLW3-XEARb89KuphI6B7Q5pwpKgCtYHe0dZ2SSwZcMcGE8xE2mnKcU5Z&gzhArtKeyWord=&page=3&t=1443059977892,测试结果 1.I

VB.net 通过WebRequest 发送post请求 如何获取http响应

问题描述 VB.net 通过WebRequest 发送post请求 如何获取http响应 VB.net 通过WebRequest 发送post请求 如何获取http响应 解决方案 http://blog.csdn.net/skylen/article/details/7594868https://msdn.microsoft.com/zh-cn/library/system.net.webrequest.getresponse(VS.80).aspx ' Create a new WebRequ

遍历元素-MFC 遍历网页获取指定CLASS内容里面的值

问题描述 MFC 遍历网页获取指定CLASS内容里面的值 单纯看网页源码看不出来所要元素 如下:我是通过火狐看到的 <a title="2345pack3_k46246958_120065803_v3.1" class="nomal_to_content" target="_blank" onclick="netdisk_pvManually('/func/waterfall_picname')" href="

Java模拟HTTP请求如何获取请求页面中ajax方法的返回值

问题描述 Java模拟HTTP请求如何获取请求页面中ajax方法的返回值 我有一个AAA.JSP页面是通过加载百度的地图API的JS文件,再调用其中的ajax请求方法获取地理坐标.地理坐标在该ajax方法的返回参数中的.我现在需要在服务器端获取地理位置信息,因此我通过java程序模拟HTTP请求,去访问AAA.JSP,但因为ajax是异步的,模拟程序访问该页面的时候,其中的ajax方法还没执行结束,服务器就返回了该页面的静态HTML内容,导致我无法获取地理位置信息.请问如何让服务器端在ajax执