webbrowser 逐一点击网页内链接

问题描述

打开百度首页,逐一打开页面里的网页,使用了time控件,每隔一段时间点击,但运行效果并没有一一打开,而是一直在运行最后一个链接里的内容http://www.baidu.com/duty/请问这个是怎么回事,要怎么处理,麻烦提供下具体的代码。谢谢!!namespacewebbrowser点击{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidtextBox1_KeyDown(objectsender,KeyEventArgse){if(e.KeyCode==Keys.Enter){webBrowser1.Navigate(textBox1.Text);webBrowser1.ScriptErrorsSuppressed=true;}}privateboolzhuantia;privatevoidwebBrowser1_DocumentCompleted(objectsender,WebBrowserDocumentCompletedEventArgse){if(webBrowser1.ReadyState==WebBrowserReadyState.Complete){zhuantia=true;}else{zhuantia=false;}}privatevoidbutton1_Click(objectsender,EventArgse){timer1.Enabled=true;}privatevoidonClick(){if(zhuantia){HtmlElementCollectionlinks=webBrowser1.Document.GetElementsByTagName("A");foreach(HtmlElementlinkinlinks){link.InvokeMember("click");}}}privatevoidwebBrowser1_NewWindow(objectsender,CancelEventArgse){e.Cancel=true;}privatevoidtimer1_Tick(objectsender,EventArgse){onClick();}}}

解决方案

解决方案二:
foreach(HtmlElementlinkinlinks){link.InvokeMember("click");}还没等载入,你就打开下一个链接了。click下一个,要放到webBrowser1_DocumentCompleted中去。
解决方案三:
还有一个比较笨的办法就是做一个循环等待while(webBrowser1.Busy){Thread.Sleep(100);Application.DoEvents();}下面的代码
解决方案四:

解决方案五:
高手支招了
解决方案六:
引用1楼findcaiyzh的回复:

foreach(HtmlElementlinkinlinks){link.InvokeMember("click");}还没等载入,你就打开下一个链接了。click下一个,要放到webBrowser1_DocumentCompleted中去。

这个具体要怎么处理,可以给具体的代码吗,因为我对这个不太熟悉,在网上查了许多都没有找到解决的方法
解决方案七:
是不是获取A标签有问题呢,就是只点后面的链接,点击进去后,可以隔三秒点击一次。
解决方案八:
1.判断webbrowser加载完成2.获取webbrowser的所有连接你的那个获取方法没问题3.对你以获取到的连接进行各种你想要的操作HtmlElementCollectionlinks=webBrowser1.Document.GetElementsByTagName("A");这个就是集合了
解决方案九:
引用7楼Hsuifengershi的回复:

1.判断webbrowser加载完成2.获取webbrowser的所有连接你的那个获取方法没问题3.对你以获取到的连接进行各种你想要的操作HtmlElementCollectionlinks=webBrowser1.Document.GetElementsByTagName("A");这个就是集合了

现在他只能点击最后一个网页的链接,前面的新闻,贴吧这些都不会点击,不知道是不是加载没完成,我也做了状态判断好像也不行。
解决方案十:
namespacewebbrowser点击{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidtextBox1_KeyDown(objectsender,KeyEventArgse){if(e.KeyCode==Keys.Enter){webBrowser1.Navigate(textBox1.Text);webBrowser1.ScriptErrorsSuppressed=true;}}privateboolzhuantia;//判断加载状态!privatevoidwebBrowser1_DocumentCompleted(objectsender,WebBrowserDocumentCompletedEventArgse){if(webBrowser1.ReadyState==WebBrowserReadyState.Complete){zhuantia=true;}else{zhuantia=false;}}privatevoidbutton1_Click(objectsender,EventArgse){//计时器开始!timer1.Enabled=true;}privatevoidonClick(){//如果加载完成,获取页面的标签,并点击if(zhuantia){HtmlElementCollectionlinks=webBrowser1.Document.GetElementsByTagName("A");foreach(HtmlElementlinkinlinks){//如果加载忙,则继续等if(webBrowser1.IsBusy){MessageBox.Show("正在加载!");Thread.Sleep(1000);Application.DoEvents();}else{link.InvokeMember("click");}}}}privatevoidwebBrowser1_NewWindow(objectsender,CancelEventArgse){e.Cancel=true;}privatevoidtimer1_Tick(objectsender,EventArgse){onClick();}}}

求具体的解决代码。。
解决方案十一:
HtmlElementCollectionlinks=webBrowser1.Document.GetElementsByTagName("A");foreach(HtmlElementlinkinlinks){//如果加载忙,则继续等if(webBrowser1.IsBusy){MessageBox.Show("正在加载!");Thread.Sleep(1000);Application.DoEvents();}else{link.InvokeMember("click");}}

这块先不要click先做个list<sting>urls=newlist<string>();urls.add(url);等for循环跑完后这个页面所有的连接就在urls里面了然后你对urls进行操作不知道符合楼主的意思不
解决方案十二:
if(zhuantia)放在foreach里面。每一次循环(即打开每一个链接)都判断一下加载状态。
解决方案十三:
打开百度首页,逐一打开页面里的网页。是逐一点首页上的每个链接,还是某个点进去后再继续点里面的链接?是在百度域名下点链接逛,还是在从首页点进去后需要回到首页点下一个链接?
解决方案十四:
引用10楼Hsuifengershi的回复:

HtmlElementCollectionlinks=webBrowser1.Document.GetElementsByTagName("A");foreach(HtmlElementlinkinlinks){//如果加载忙,则继续等if(webBrowser1.IsBusy){MessageBox.Show("正在加载!");Thread.Sleep(1000);Application.DoEvents();}else{link.InvokeMember("click");}}

这块先不要click先做个list<sting>urls=newlist<string>();urls.add(url);等for循环跑完后这个页面所有的连接就在urls里面了然后你对urls进行操作不知道符合楼主的意思不

这个最后还是要点击,还是有一个加载webbrowser的问题的好像呢。如果放到里list里,是不是还要构建网页标签才能使用click
解决方案十五:
引用12楼jason_mf的回复:

打开百度首页,逐一打开页面里的网页。是逐一点首页上的每个链接,还是某个点进去后再继续点里面的链接?是在百度域名下点链接逛,还是在从首页点进去后需要回到首页点下一个链接?

是在首页下面就点击上面的几个链接,每一个都打开加载这样子。
解决方案:
继续等!!!
解决方案:
你搞个textbox_keydown在哪里卡主zhuantia这个变量,然keydown事件需要自己出发,怎么运行?基本上timer没神马作用了。
解决方案:
我觉得onClick()应该放在DocumentComplete里面。定义一个全局List1〉页面加载完成就去所有Link,然后选一个,判断是否在List中,在则换一个link,点击(并将这个这个Link加入List,记录已点击过),进入二级页面。2〉等二级页面加载完,回到首页。3〉重复1〉
解决方案:
引用17楼jason_mf的回复:

我觉得onClick()应该放在DocumentComplete里面。定义一个全局List1〉页面加载完成就去所有Link,然后选一个,判断是否在List中,在则换一个link,点击(并将这个这个Link加入List,记录已点击过),进入二级页面。2〉等二级页面加载完,回到首页。3〉重复1〉

可以给具体的代码吗,因为不太熟悉这个,或者你方便的话我付费也可以

时间: 2024-12-28 00:35:24

webbrowser 逐一点击网页内链接的相关文章

vc-VC用webbrowser自动点击网页上的按钮

问题描述 VC用webbrowser自动点击网页上的按钮 VARIANT vt; COleVariant vaUrl=_T("E:ie.html"); m_web.Navigate2(vaUrl,&vt,&vt,&vt,&vt); IDispatch *pDisp=m_web.GetDocument(); IHTMLDocument2 *pDocument; IHTMLElementCollection *pCollection; pDisp->Q

求助:webbrowser模拟点击网页按钮问题

问题描述 网页源代码如下:<inputclass="btn"name="un_submit"id="un_submit"type="button"value="提交"onclick="returnCheckForm(document.getElementById('form'),'','')">我用的代码:htmldocumentdoc=webbrowser1.documen

Win7系统中点击网页二级链接后一片空白的解决方法

  1.按"WIN+R"打开"运行"窗口,输入"cmd"命令后按回车,打开命令提示符窗口. 2.在DOS界面输入命令提示符,输入如下命令: "for %1 in (%windir%system32*.dll) do regsvr32.exe /s %1"后按回车键,这样Win7系统会将"%windir%system32"下所有的DLL文件注册一遍,请耐心等待一会,时间较久,大概需要5到10分钟时间. 3.待

C# winform webbrowser 怎么获取网页内框架的链接地址

问题描述 C#winformwebbrowser怎么获取网页内框架的链接地址webBrowser1.Document.Window.Frames.Count可以得到网页的框架数量webBrowser1.Document.Window.Frames[0].Document.Url.ToString();出现以下错误:"System.UnauthorizedAccessException"类型的未经处理的异常在System.Windows.Forms.dll中发生其他信息:拒绝访问.(异常

网页开发-c# webbrowser 获取网页内的超连接

问题描述 c# webbrowser 获取网页内的超连接 大神们看下面代码,是webbrowser的,上面的点击可以执行,但是没办法获取到对应文字的链接: if (webBrowser1.Document.All[i].OuterText == textBox1.Text) { webBrowser1.Document.All[i].InvokeMember("click"); } 我想获得i文字的超连接要怎么获得呢? object url1 = webBrowser1.Documen

javascript-js点击某一个链接交替执行两个函数(js实现网页全屏问题)

问题描述 js点击某一个链接交替执行两个函数(js实现网页全屏问题) 想实现的需求:1.网页上有个"全屏显示"按钮(链接),点击全屏后执行函数fullScreen(),然后"显示全屏"二字变成"退出全屏":2.点击"退出全屏"执行函数exitFullScreen(),然后"退出全屏"变为"全屏显示" function fullScreen() { var el = document.do

webbrowser-vb.net WebBrowser如何点击带的 javascript链接的元素

问题描述 vb.net WebBrowser如何点击带的 javascript链接的元素 <a hidefocus=""true"" onclick=""(function(that){durexCheck(function(){changeDBOnline(that'PAID')} '#J_changeDB_durex')})(this) href=""javascript:void(0)"" da

导航-关于一个网页内的链接被后台调换的问题,如何发现,和防止。谢谢,在线急等,欢迎私信

问题描述 关于一个网页内的链接被后台调换的问题,如何发现,和防止.谢谢,在线急等,欢迎私信 亲,明明是点了导航网页的搜索网站,却去了门户网站:明明是在网银支付,却转账去了另个账户.恼火!请教大神们,如何防止和预防.

怎么获取网页内框架的链接地址

问题描述 怎么获取网页内框架的链接地址webBrowser1.Document.Window.Frames.Count可以得到网页的框架数量webBrowser1.Document.Window.Frames[0].Document.Url.ToString();出现以下错误:"System.UnauthorizedAccessException"类型的未经处理的异常在System.Windows.Forms.dll中发生其他信息:拒绝访问.(异常来自HRESULT:0x8007000