华为P9怎么设置开华为手机静音找不到

114网址导航下次自动登录
现在的位置:
& 综合 & 正文
.net(c#)在循环语句中执行WebBrowser.Navigate();方法,每次循环等待网页加载完后继续执行的解决方案.(转载)
有蛮久没有更新了,我还是当初的员吗,呵呵
/yangxiaohu1/archive//1370693.html
最近在写一个小程序的时候,遇到这样的需求:
已知一组网页url地址,想获取每一个网页的html,实际上就是想利用循环语句里面使用WebBrowser来加载每一个网页,然后获取他们的html,
要实现这个功能,想想应该是件很简单的事情,但是在实际操作中却遇到了问题,因为循环语句和WebBrowser的加载不同步的原因,导致前一个
前一个网页还没加载完,下一次循环又开始了....最终的结果是WebBrowser只获取到了最后一个页面的html.要解决这个问题,我们要做的就是
让循环执行完前一次后等待网页加载完,然后执行下一次循环去加载下面的网页.....,按照这个思路,写了以下程序,经测试果然有效.
该变量表示网页是否正在加载.
WebBrowser browser
WebBrowser();
browser.Navigated
WebBrowserNavigatedEventHandler(browser_Navigated);
表示正在加载
browser.Navigate(url);
Application.DoEvents();
等待本次加载完毕才执行下次循环.
browser_Navigated(
sender, WebBrowserNavigatedEventArgs e)
browser.DocumentT
获取到的html.
在加载完成后,将该变量置为false,下一次循环随即开始执行.
上面的问题解决了,下面随之而来的问题是:
有时候加载一张页面的时候,browser_Navigated会执行多次.
查了下网上的资料,原因是页面中含有&iframe&&/iframe&,每一个&iframe&都会触发一次browser_Navigated,
所以,以上程序可以完善如下:
该变量表示网页是否正在加载.
WebBrowser browser
WebBrowser();
browser.Navigated
WebBrowserNavigatedEventHandler(browser_Navigated);
表示正在加载
browser.Navigate(url);
Application.DoEvents();
等待本次加载完毕才执行下次循环.
browser_Navigated(
sender, WebBrowserNavigatedEventArgs e)
假设每张页面要执行3次browser_Navigated方法,那么这表示网页全部内容加载完成.(至于这个3要怎么样得到,那是仁者见仁的事情了,呵呵)
browser.DocumentT
获取到的html.
在加载完成后,将该变量置为false,下一次循环随即开始执行.
以上只是笔者在工作中的一点小总结,写出来做个笔记,也希望能给其他人带来一些帮助.相信解决此问题的方法颇多,望不吝赐教...
有时需要用WebBrowser加载URL,来实现某些功能。而这时,我们就不希望所打开的页面中的链接,在新窗口中打开,因为这样的话,实际上是用系统默认的浏览器打开了,从而脱离了你的WebBrowser,也就不能被你所控制了。
要解决这个问题,可以使用下面的方法:
假设WebBrowser的Name是 webBrowser
简单方法-利用加载完成事件将所有的链接和form的target值改为"_seft":
webBrowser_DocumentCompleted(
sender, WebBrowserDocumentCompletedEventArgs e)
(HtmlElement archor
.webBrowser.Document.Links)
archor.SetAttribute(
(HtmlElement form
.webBrowser.Document.Forms)
form.SetAttribute(
取消新窗口事件
webBrowser1_NewWindow(
sender, CancelEventArgs e)
e.Cancel =
将 WebBrowser 的 AllowWebBrowserDrop
设为 false(禁止拖放)
将 WebBrowser 的 WebBrowserShortcutsEnabled
设为 false(禁止使用快捷键)
将 WebBrowser 的 IsWebBrowserContextMenuEnabled 设为 false
(禁止右键上下文菜单)
本文地址:
&&&&推荐文章:
【上篇】【下篇】【记录】C#中使用WebBrowser浏览google页面
C#中,需要用WebBrowser模拟浏览器访问页面。
且需要能捕获到用户的点击事件,然后执行一些动作。
能访问google搜索。
能得到当前的html。
能捕获到点google搜索结果中的第几页后,
再去获得最新的html,然后解析html,提取其中的url。
【解决过程】
1.新建一个WebBrowser:
2.然后再去弄懂如何使用WebBrowser。
尝试直接设置对应的Uri:
//.hk/search?q=weight%20loss+%22Sponsor%20Charity%22
wbsChaseFootprint.Url = new Uri(strEncodedFullFootprintUrl);
结果是直接就可以实现浏览网页的效果了:
3.现在接着要去获得,当前网页的html,并且提取其中的url地址显示出来。
现在先要搞清楚,如何判断网页加载完毕,然后才能是去获得html。
然后参考:
然后发现,本身WebBrowser内置支持此completed事件:
所以双击添加代码:
private void wbsChaseFootprint_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
4.然后接着去搞懂如何获得html内容。
string curHtml = wbsChaseFootprint.DocumentT
就可以获得html代码了。
5.不过,本身只是想要提起google搜索出来的结果的url地址,所以,在看了别人:
提到的GetElementById,GetElementsByTagName,所以,打算直接借用试试,看看能否获得对应的html的tag内容,以及接着获得其中的url。
以此希望免去复杂的html的解析。
想去试试,结果看了官网的:
的解释后,放弃了此想法,因为其没有像之前的Xpath那样方便,能直接找到所要的html中的节点。
6.而关于从WebBrowser得到的HtmlDocument,对于Xpath是否支持,参考了:
说是不支持的。
所以,干脆还是自己另外处理从DocumentText所得到的,原始的html吧。
7.所以,还是用原来的HtmlAgilityPack去处理吧。
相关代码如下:
private void wbsChaseFootprint_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
string curHtml = wbsChaseFootprint.DocumentT
//System.Windows.Forms.HtmlDocument htmlDoc = wbsChaseFootprint.D
List&crifanLibGoogle.googleSearchResultItem& resultItemList = google.extractGoogleSearchResult(&&, curHtml);
if ((resultItemList != null) && (resultItemList.Count & 0))
txbOutput.Text = &&;
foreach (crifanLibGoogle.googleSearchResultItem singleResultItem in resultItemList)
txbOutput.Text += singleResultItem.Url + Environment.NewL
using HtmlAgilityP
public class crifanLibGoogle
public crifanL
public struct googleSearchResultItem
public string Title { }
public string Url { }
//TODO: add Description
* [Function]
* extract google search result item from google search url or its html
* .hk/search?q=weight%20loss+%22Sponsor%20Charity%22
* or its html
* [Output]
* search result item
public List&googleSearchResultItem& extractGoogleSearchResult(string googleSearchUrl = &&, string googleSearchRespHtml = &&)
List&googleSearchResultItem& resultItemList = new List&googleSearchResultItem&();
//if not give html, get it
if (string.IsNullOrEmpty(googleSearchRespHtml))
googleSearchRespHtml = crl.getUrlRespHtml_multiTry(googleSearchUrl);
if (!string.IsNullOrEmpty(googleSearchRespHtml))
//&li class=&g&&
&div data-hveid=&42& class=&rc&&
&span style=&float:left&&&/span&
&h3 class=&r&&
&a href=&http://articles.//kochi/_kidney-transplants-fireworks-factory-birthday-celebrations& onmousedown=&return rwt(this,'','','','1','AFQjCNEML6Pgh2cKhjyy19S1Rj2zt91iAg','','0CCsQFjAA','','',event)& target=&_blank&&
Amritanandamayi Math to &em&sponsor charity&/em& events - Times Of India
&div class=&s&&
&div&&div class=&f kv& style=&white-space:nowrap&&&cite class=&bc&&articles. & &a href=&http://articles./& onmousedown=&return rwt(this,'','','','1','AFQjCNHYQDP9zOXmqE2BLyiniRDD4oZS4g','','0CC0Q6QUoADAA','','',event)& target=&_blank&&Collections&/a& & &a href=&http://articles./keyword/kannur& onmousedown=&return rwt(this,'','','','1','AFQjCNFOec2KvR8ZCCt8sV5S5EZBpJ1l8g','','0CC4Q6QUoATAA','','',event)& target=&_blank&&Kannur&/a&&/cite& - &a href=&.hk/translate?hl=zh-CN&sl=en&u=http://articles.//kochi/_kidney-transplants-fireworks-factory-birthday-celebrations&prev=/search%3Fq%3Dweight%2Bloss%2B%2522Sponsor%2BCharity%2522%26newwindow%3D1%26safe%3Dstrict& onmousedown=&return rwt(this,'','','','1','AFQjCNEiP3vOES7Rpw3v20GEzkxb_WL5DA','','0CDAQ7gEwAA','','',event)& target=&_blank& class=&fl&&翻译此页&/a&&/div&&div class=&f slp&&&/div&&span class=&st&&&span class=&f&&日 & &/span&Amritanandamayi Math to &em&sponsor charity&/em& events. TNN Sep 22, 2012, &b&...&/b& 10 Tips for guaranteed &em&weight loss&/em& & How to lose weight without dieting&&b&...&/b&&/span&
//&li class=&g&&
&div data-hveid=&50& class=&rc&&
&span style=&float:left&&&/span&
&h3 class=&r&&
&a href=&http://www.gobookee.net/non-profit-charity-golf-sponsor-letter/& onmousedown=&return rwt(this,'','','','2','AFQjCNGACDpc3rYcQ7xyLWeso2O8Uh_dzQ','','0CDMQFjAB','','',event)& target=&_blank&&
Non profit charity golf sponsor letter - free eBooks download
&div class=&s&&&div&&div class=&f kv& style=&white-space:nowrap&&&cite&www.gobookee.net/non-profit-charity-golf-sponsor-letter/&/cite&?&div class=&action-menu ab_ctl&&&a class=&clickable-dropdown-arrow ab_button& id=&am-b1& href=&#& data-ved=&0CDQQ7B0wAQ& aria-label=&结果详情& jsaction=&ab. keydown:ab. keypress:ab.mskpe& role=&button& aria-haspopup=&true& aria-expanded=&false&&&span class=&mn-dwn-arw&&&/span&&/a&&div data-ved=&0CDUQqR8wAQ& class=&action-menu-panel ab_dropdown& jsaction=&keydown:ab. mouseover:ab. mouseout:ab.hdhue& role=&menu& tabindex=&-1&&&ul&&li class=&action-menu-item ab_dropdownitem& role=&menuitem&&&a href=&/search?q=cache:700J2efn4woJ:www.gobookee.net/non-profit-charity-golf-sponsor-letter/+weight+loss+%22Sponsor+Charity%22&cd=2&hl=zh-CN&ct=clnk&gl=cn& onmousedown=&return rwt(this,'','','','2','AFQjCNH4JkH1_ORT0Gq3Gi-_UsKhuGy4PA','','0CDYQIDAB','','',event)& target=&_blank& class=&fl&&网页快照&/a&&/li&&/ul&&/div&&/div&&a href=&.hk/translate?hl=zh-CN&sl=en&u=http://www.gobookee.net/non-profit-charity-golf-sponsor-letter/&prev=/search%3Fq%3Dweight%2Bloss%2B%2522Sponsor%2BCharity%2522%26newwindow%3D1%26safe%3Dstrict& onmousedown=&return rwt(this,'','','','2','AFQjCNFgq5X686zRjTuhe8rQ11RoE7VNEw','','0CDgQ7gEwAQ','','',event)& target=&_blank& class=&fl&&翻译此页&/a&&/div&&div class=&f slp&&&/div&&span class=&st&&GOLF TOURNAMENT &em&SPONSOR. ... charity&/em& golf tournament to help raise funds for our programs and teams ... non-profit org. so all donations/sponsorships are&&b&...&/b&&/span&&/div&&/div&
HtmlAgilityPack.HtmlDocument htmlDoc = crl.htmlToHtmlDoc(googleSearchRespHtml);
HtmlNodeCollection liNodeList = htmlDoc.DocumentNode.SelectNodes(&//li[@class='g']&);
foreach (HtmlNode liNode in liNodeList)
HtmlNode h3ANode = liNode.SelectSingleNode(&.//h3[@class='r']/a&);
if (h3ANode != null)
googleSearchResultItem singleResultItem = new googleSearchResultItem();
//string titleHtml = h3ANode.InnerH //&Amritanandamayi Math to &em&sponsor charity&/em& events - Times Of India&
string titleHtml = h3ANode.InnerT //&Amritanandamayi Math to sponsor charity events - Times Of India&
string filteredTitle = crl.htmlRemoveTag(titleHtml);
string url = h3ANode.Attributes[&href&].V //&http://articles.//kochi/_kidney-transplants-fireworks-factory-birthday-celebrations&
//store info
singleResultItem.Title = filteredT
singleResultItem.Url =
resultItemList.Add(singleResultItem);
return resultItemL
C#的WebBrowser,相对还是蛮好用,容易上手的。
只是,对于另外解析html来说,内置的DOM不好用。只好另外用HtmlAgilityPack去实现自己想要的,任何的效果了。
共享此文章:
分类 未分类
免费的格式化Javascript源码的网站
查询Unicode字符,且还带Oct,Decimal,Hex,HTML Entity
HTML和Javascript都支持,很好用。

我要回帖

更多关于 怎么设置电脑开机静音 的文章

 

随机推荐